그냥 코딩

스프링 오픈소스 컨트리뷰트 하기

컴공코딩러 2023. 8. 25. 12:52

팀프로젝트를 하던 도중 프론트 개발자분이 나에게

 

오픈소스 기여하는거 별거 아니라던데요?

 

라고 말해주셔서 아 그럼 한번 해볼까 하고 프로젝트를 찾아보았다.

 

무슨 프로젝트를 해야할지 몰라서 gpt 한테 한번 물어봤다.(검색해서 찾아보다가 GPT가 생각났음..)

 

처음엔 너무 큰 프로젝트를 알려줘서 다시 물어봤다..

 

 

10개정도 알려줬는데 그냥 첫번째 있는 반려동물 관리 프로젝트로 들어갔다.

 

스타는 6.7K!!

 

 

 

귀요미 펫관리 프로젝트...

 

처음엔 프로젝트를 살펴보았다.

 

 

 

펫관리하는 owners를 추가할수있다..

 

 

나는 습관적으로 이상한값들을 넣어보는 습관이 있기때문에 한번 체크해보았다..

 

음.. null값은 체크하고있고.. 그렇다면 whitespace(공백) 를 한번 넣어볼까?

 

 

전화번호를 제외한 부분이 통과되고 있었다... 바로 찾아버림..

 

그래서 이유가 무엇 때문일까 테스트 해봤다..

 

NotEmpty 인데 왜그렇지???

 

그래서 찾아보았다..

 

@NotNull

The annotated element must not be null. Accepts any type.

NotNull은 null 값만 허용하지 않는다. "", " " 가 입력되었을 경우는 허용하게 됩니다.

 

 

@NotEmpty

The annotatd element must not be null nor empty.

Supported types are : 

- CharSequence (length of character sequence is evaluated)

- Collection (collection size is evaluated)

- Map (map size is evaluated)

- Array (array length is evaluated)

 

NotEmpty는 null, ""에 대한 입력을 허용하지 않는다.  " "(공백) 의 입력은 허용된다.

 

@NotBlank

 

The annotated element must not be null and must contain at least one non-whitespace character. Accepts CharSequence.

NotBlank는 세 가지 어노테이션 중 가장 강도가 강하다 null, "", " " 모두 허용하지 않습니다.

 

음 이부분을 바꾸면 되겠다.. 운이 좋았는지 생각보다 금방 찼았고 6개 값을 바꿔주었다.

 

@NotEmpty 에서 @NotBlank로 수정했다.

 

 

생각보다 더 있을것 같아서 더 바꿀부분을 찾아보려고 했다.

 

 

 

이번엔 어플리케이션을 실행해서 찾아보는게 아닌 코드를 확인해보려 했다.

 

Pet에 대한 값을 Validate하는 함수

 

name값에대한 검증을 Stringutils.hasLength로 체크하고있다.(값이 들어왔는지 확인)

 

하지만 hasLength 라는 이름이 뭔가 ...음 이름에서 냄새가 난다.... 

 

바로 찾아보았다..

hasLength


Check that the given String is neither null nor of length 0.

Note: this method returns true for a String that purely consists of whitespace.

 

스트링이 null이거나 length가 0인지를 check한다

공식 홈페이지에서도 note로 공백값은 True로 반환한다고 나와있다. 여기도 또 공백값을 허용하고있었다.

 

그럼 무엇으로 바꾸면 좋을까..

스프링 페이지에 haslength 아래 hastext 라는 함수가 있네..?

 

hasText

Check whether the given String contains actual text.

More specifically, this method returns true if the String is not null, its length is greater than 0, and it contains at least one non-whitespace character.

 

hastext는 null ,length,whitespace 모두 확인을 해서 True를 반환한다.

 

 

찾아보니 3개나 쓰고있어서 3개 모두 바꿔주었다!.

 

PR을 넣고 한 2주를 기다렸다...

 

드디어 메일이 왔다.. 근데..?

 

빌드 테스트를 통과못했다.. 도대체 왜지??

 

 

테스트 코드에서 shouldNotValidateWhenFirstNameEmpty() 함수를 통과못하고있었고

 

예상값은 ~~ empty 여야하는데 지금 blank값을 뱉고있다고 나와있다.. 당연하다 empty에서 blank로 바꿨으니까..

테스트 코드 도 수정해주시고..

 

스프링 코파운더 dsyer 형님의 코멘트이다.

dsyer 형님도 수정된 부분에 어느정도 동의하고 작은 변화라고 하셨다

그리고 테스트케이스를 통과되도록 수정해달라고 하셨다.

(PR 넣고 2주 넘게 기다려서 안되나 했지만.. 사실 무조건 머지 될거같았음)

 

 

다시 push 했다.

 

고쳤다고 이야기 드렸고 

 

 

이전 통과못했던 테스트를 통과하고 성공적으로 merge 되었다.

 

컨트리뷰터가 95명에서 96명이되었다.! 

 

컨트리뷰터에 잘 추가 되어있다..

 

 

 

당연히 main에는

 

내가 수정한 코드들이 반영되었고 재밌는 경험이었다..

 

다른사람 코드 구경하는거랑 수정할부분 찾아서 PR넣는게 은근히 재밌다..

'그냥 코딩' 카테고리의 다른 글

[C언어] 문자열 뒤집기  (0) 2019.01.24
[C언어] 문자열 공백제거 출력  (0) 2019.01.24
[C언어] 문자열 대소문자 변환  (0) 2019.01.24