네이버 코딩컨벤션 적용하기 - formatter / rules / suppressions .xml
2024. 3. 14. 23:21ㆍSpring Boot
728x90
반응형
#1. 설명
💡 아래 글은 전부 intellij 환경에서 실행됨
- 참조:
- 네이버에서 코딩 컨벤션 formatter와 checkstyle을 제공해주신다.
- 협업 시 이를 각각 적용 후, 검사하여, 통일된 코딩 환경을 만들면 좋을 것 같다.
- naver-intelij-formatter
- 포맷팅해주는 역할
- naver-checkstyles-rules
- checkstyle 시 따르는 룰들
- local checkstyle 에서 naver-checkstyles-rules를 등록하여 룰을 지정해줄 수 있음
- naver-checkstyle-suppressions
- 어디부분까지 제어할 지에 대해서는 naver-checkstyles-suppressions을 통해 지정할 수 있음
#2. 적용 범주
1. CRLF (carriage return) vs. LF (line feed)
- 유닉스 - LF (\n)
- windows - CRLF (\r\n)
- 코딩 컨벤션 check styles 에서 LF 를 권고하는 이유
- CRLF 와 LF의 바이트 코드가 다르기 때문에, 형상관리 툴에서 각각 다른 코드로 인식함으로 commit 할 때 줄바꿈 타입이 다른 경우 변경하지 않은 파일에 대해서도 변경된 것으로 인식하기 때문에 LF 로 통일
2. DTO등 대문자 약어 포함
B.7.1. 대문자로 표기할 약어를 추가
'대문자로 표기할 약어 명시' 규칙에 따라서 대문자로 표기할 약어는 따로 명시해야 한다. naver-checkstyle-rules.xml 파일에서 allowedAbbreviations 속성에 해당 단어를 추가한다.
대문자로 표기할 약어를 설정 파일에 명시
<!-- [list-uppercase-abbr] -->
<module name="AbbreviationAsWordInName">
<property name="ignoreFinal" value="false"/>
<property name="allowedAbbreviationLength" value="1"/>
<message key="abbreviation.as.word"
value="[list-uppercase-abbr] Abbreviation in name ''{0}'' must contain no more than {1}"/>
<property name="allowedAbbreviations" value="DAO,BO"/>
</module>
3. snake_case
- snake_case 선택 안 됨
- 그러나 특정 파일에서(예시: dto)의 사용 중일 때 허용해주는 방법:
- suppression.xml 에 아래와 같이 추가
<suppressions> <suppress files="dto.*.*.java" checks="MemberName"/> <suppress files="dto.*.*.java" checks="ParameterName"/> </suppressions>
#3. 적용 방법
1. 우선 일괄 적용
- 우선 전부 LF 적용
- src 폴더 선택 → ctrl + shift + a → LF 입력 → 엔터 끝
- 모든 파일 바뀌어 있음우선 전부 LF 적용
- 그 후 java 폴더에 reformat
- resource 폴더에 대고 reformat
2. 직후 각자 적용
- 각자에게 변경된 xml 배부
- rules.xml *변경될 수 있음
- suppressions.xml *변경될 수 있음
- formatter.xml
- 각자 브랜치에서 작업 종료
- 코딩컨벤션 issue 발행 후 브랜치 생성
- 우선 전체 파일 대상 변경 푸시 (상술 일괄 적용 방법 적용)
- CRLF → LF
- reformat
- 각자 브랜치 풀 받고 작업
- 각자 모듈에 맞는 부분 rules.xml checkstyle 하면서 확인
- local checkStyle 에 rules.xml 파일 적용하는 방법은 위 블로그 참조
- 코딩컨벤션 맞을 때까지 수정
- 각자 모듈에 맞는 부분 rules.xml checkstyle 하면서 확인
728x90
반응형
'Spring Boot' 카테고리의 다른 글
Java Spring - Cache 도입기 (2 / 2): Redis 적용기 (1) | 2024.03.14 |
---|---|
Java Spring - Cache 도입기 (1 / 2): 어떤 캐시를 쓸까? (0) | 2024.03.14 |
Java Spring 으로 백엔드 개발 시 지양해야할 코딩 패턴: (1) | 2024.03.14 |
사용자 정의 어노테이션을 활용한 Profile 별 호출 가능 API 설정 - @LocalDevOnly (0) | 2024.03.14 |
Node 에서 Java spring 로의 리팩토링 기록 ( NoSql 에서 Sql로) (0) | 2024.03.14 |