IT 개발노트
InteliJ 네이버 Java 코딩 컨벤션 적용하기 + Checkstyle 본문
코딩 컨벤션이란?
코딩 컨벤션이란 가독성이 좋고 관리하기 쉬운 코드를 작성하기 위한 코딩 스타일 규약을 말한다.
코딩 컨벤션을 준수하면 가독성이 좋아지고 성능에 영향을 주거나 오류를 발생시키는 잠재적인 위험 요소를 줄여줘 유지보수 비용을 줄일 수 있다.
코딩 컨벤션을 적용하기 위해 정적 코드 분석 도구를 도입하는데, 보통 자바스크립트에서는 ESLint, Java에서는 Checkstyle과 같은 도구를 주로 사용한다.
Java에서는 구글이나, 네이버에서 지정한 코딩 컨벤션이 유명하므로 오늘은 InteliJ에 네이버 코딩 컨벤션을 Code Style Formatter로 설정하고, Checkstyle까지 적용하는 과정을 설명한다.
네이버 캠퍼스 핵데이 Java 코딩 컨벤션에 대해 자세한 명세 사항은 아래 링크에서 확인할 수 있다.
https://naver.github.io/hackday-conventions-java/
InteliJ Formatter 적용
Fomatter 다운로드 링크
Scheme 설정
- InteliJ에서 File → Settings 메뉴를 연다. (Alt + Shift + S)
- Editor → Code Style → Java 항목으로 이동한다.
- Scheme 항목의 오른쪽에 있는 톱니바퀴 아이콘을 선택한다.
- Import Scheme → InteliJ IDEA Code Style XML을 선택한다.
- 다운로드한 naver-intelij-formatter.xml 파일을 선택한 후 OK 버튼을 누른다.
- 그럼 To 항목에 이름을 정할 수 있는데, 디폴트 값으로 설정해도 상관 없지만, 포멧터를 커스터마이징 했거나 프로젝트마다 다른 포멧터 설정을 사용한다면 스키마의 이름을 유일성 있게 수정한다.
저장 시 마다 코딩 컨벤션 자동 적용하기
Reformat code(저장 시 자동으로 포맷 적용)와 Optimize imports(저장 시 사용하지 않는 import 제거)를 체크한다.
Checkstyle 적용
Checkstyle이란 Java 소스 코드가 지정된 코딩 컨벤션을 준수하는지 확인하기 위한 정적 코드 분석 도구이다.
지정된 규칙에 어긋나는 경우 컴파일 시 경고나 에러를 띄워준다.
진행하기 전에 아래 링크에서 naver-checkstyle-rules.xml과 naver-checkstyle-suppressions.xml를 다운로드 한다.
- https://github.com/naver/hackday-conventions-java/blob/master/rule-config/naver-checkstyle-rules.xml
- https://github.com/naver/hackday-conventions-java/blob/master/rule-config/naver-checkstyle-suppressions.xml
Checkstyle 플러그인 설치
Marketplace에 CheckStyle을 검색하여 CheckStyle-IDEA 플러그인을 설치한다.
Checkstyle 설치
- Scan scope를 All sources including tests로 설정한다.
- Treat Checkstyle errors as warnings를 체크한다.
- Configuration File에서 + 버튼을 클릭한다.
- Description은 Naver Checkstyle Rules [버전] 으로 지정하는 것이 권장되지만 프로젝트별로 커스터마이징 했다면 프로젝트 이름 등을 붙인다.
- Use a Local Checkstyle File을 선택하고 Browse 버튼을 눌러서 naver-checkstyle-rules.xml를 지정하고 Next 버튼을 누른다.
- suppressionFile 변수를 설정하라는 창이 뜨면 Value에 naver-checkstyle-suppressions.xml를 입력하고 Next 버튼을 누른다.
- Naver Checkstyle Rules의 Active를 체크한다.
'기초튼튼' 카테고리의 다른 글
Stateful / Stateless 차이 (1) | 2024.02.07 |
---|---|
[AWS] ECS 및 EKS 개념 정리 (0) | 2023.05.16 |
PIL 라이브러리 OSError image file is truncated 해결 방법 (1) | 2023.05.15 |
REST API 컨벤션 정리 (0) | 2022.08.28 |
nexacro platform (넥사크로) 설치 (0) | 2020.01.14 |