네이버 코딩컨벤션 적용하기 - formatter / rules / suppressions .xml

2024. 3. 14. 23:21자바/자바스프링

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 파일 적용하는 방법은 위 블로그 참조
    • 코딩컨벤션 맞을 때까지 수정

 

 

728x90
반응형