본문 바로가기
기타

Intelli J 네이버 코딩 컨벤션 적용 및 Check Style Build

by Bhinney 2022. 11. 9.

지난 프리 프로젝트를 하면서 프로젝트에 코딩 컨벤션을 적용하고, 빌드에 포함시키면서 작업을 하였다.

힘들기도 했지만, 깔끔하고 가독성이 좋게 코드가 정리가 되었던 경험이 좋았다.

해당 과정에서 알게 된 방법들을 정리하려고 한다.


📌 코딩 컨벤션

  • 가독성이 좋고 관리하기 쉬운 코드를 작성하기 위한 코딩 스타일 규약
  • 작성한 코드를 효율적으로 유지 보수 하기 위한 공통의 규칙
  • 코딩 컨벤션을 준수하면 가독성이 좋아지고 성능에 영향을 주거나 오류를 발생시키는 잠재적인 요소를 줄여주어 유지 보수 비용 절감

📌 네이버 컨벤션 적용


📌 저장 시 코딩 컨벤션 자동 적용

사실 이 부분은 잘 모르겠다.
따라해 보았으나 필자는 잘 적용이 안되었다. 
그래서 이후 밑에 나오는 build에 추가하여 사용했다.
  • Intelli J 파일에서 Intelli J 👉🏻 preference 로 환경설정(Setting)을 연다.
  • 도구(Tools) 👉🏻 저장 시 액션(Actions on Save) 👉🏻 코드 서식 재지정(Reformat code)


📌 Check Style 플러그인 설치

  • Intelli J 파일에서 Intelli J 👉🏻 preference 로 환경설정(Setting)을 연다.
  • 플러그인(plugin)에서 CheckStyle-IDEA plugin 설치 후 인텔리 제이 재 실행
  • 아래의 우측 이미지처럼 IntelliJ 하단에 Check Style 확인 가능


📌 Check Style Build 적용

필자는 체크 스타일이 저장 되지 않아 빌드에 적용하는 것을 선택했다.
  • Build에 적용시키고 싶지 않다면 다음으로 이동.
  • check style을 어길 시 build를 실패 시킴.
  • 다운로드 : https://github.com/naver/hackday-conventions-java/tree/master/rule-config
  • 위의 링크에서 naver-checkstyle-rules.xml, naver-checkstyle-suppressions.xml 다운로드
  • 해당 파일을 build 파일과 같은 경로에 위치 시킨다.
  • 이 파일을 build와 같은 경로에 위치 시키지 않으면, build는 계속 실패하고 아래의 코드와 같은 오류가 발생
  • 차이를 알고 싶으면 : https://bhinney.tistory.com/122
> A failure occurred while executing org.gradle.api.plugins.quality.internal.CheckstyleAction
   > Unable to create Root Module: config {/Users/{폴더 경로들}/[빌드 폴더 이름]/naver-checkstyle-rules.xml}, classpath {null}.

  • .editorconfig을 추가하여 아래 코드 내용 작성
  • 여러 개발자가 하나의 프로젝트에서 작업할 때, 동일한 코드 스타일을 유지할 수 있도록 도움
  • utf-8 인코딩, 새줄 문자 LF, 파일 끝에 LF 추가, 들여쓰기 탭을 스페이스4개 등을 추가
  • 궁금하다면 : https://editorconfig.org/
//.editorconfig 파일

# top-most EditorConfig file
root = true

[*]
# [encoding-utf8]
charset = utf-8

# [newline-lf]
end_of_line = lf

# [newline-eof]
insert_final_newline = true

[*.bat]
end_of_line = crlf

[*.java]
# [indentation-tab]
indent_style = tab

# [4-spaces-tab]
indent_size = 4
tab_width = 4

# [no-trailing-spaces]
trim_trailing_whitespace = true

[line-length-120]
max_line_length = 120
  • build.gradle에 아래의 코드 추가
plugins {
	...
    
	id 'org.ec4j.editorconfig' version '0.0.3'
	id 'checkstyle'
	id 'java'
}

...

editorconfig {
	excludes = ['build']
}

checkstyle {
	maxWarnings = 0
	configFile = file("${rootDir}/naver-checkstyle-rules.xml")
	configProperties = ["suppressionFile": "${rootDir}/naver-checkstyle-suppressions.xml"]
	toolVersion = "9.2"
}

check.dependsOn editorconfigCheck

compileJava.options.encoding = 'UTF-8'
compileTestJava.options.encoding = 'UTF-8'

❗️이후 아래의 Check Style을 설정 후, 해당 내용을 벗어나면 아래처럼 빌드가 실패함 ❗️

  • 해당 오류를 더 자세히 알고 싶다면, build 👉🏻 reports 👉🏻 checkstyle 👉🏻 main.html
  • 파일을 크롬으로 열어본다면, 아래의 사진처럼 확인 가능


📌 Check Style 설정

  • 만약 build에 적용하지 않는 선택을 했다면 아래의 링크로 들어가 파일을 다운로드
  • 다운로드 : https://github.com/naver/hackday-conventions-java/tree/master/rule-config
  • 위의 링크에서 naver-checkstyle-rules.xml, naver-checkstyle-suppressions.xml 다운로드
  • Intelli J 파일에서 Intelli J 👉🏻 preference 로 환경설정(Setting)을 연다.
  • 도구(Tools) 👉🏻checkstyle 👉🏻 Configuration File의 + 버튼 클릭

  • Description을 적어준다. (권장사항 : Naver Checkstyle Rules [version] )
  • 프로젝트별로 커스터마이징 시, 프로젝트 이름 등을 붙임
  • File의 Browse를 클릭하여 naver-checkstyle-rules.xml 파일을 선택
  • 다음(Next)을 눌러 suppressionFile의 value에 naver-checkstyle-suppressions.xml 입력 후 Next

  • 해당 파일이 잘 들어갔는지 확인 후, 해당 파일 Active 체크
  • Scan Scope와 Treat Checkstyle errors as warnings, Copy libraries from project directory(requires restart) 중 필요에 따라 선택 후 확인(Apply)
  • 아래처럼 check style을 벗어나면 확인 가능


 

 

 

'기타' 카테고리의 다른 글

[GitHub] Git branch  (0) 2022.10.23
[GitHub] Issues, Milestone, Projects  (0) 2022.10.23
StringBuffer VS StringBuilder  (0) 2022.07.27
JSON  (0) 2022.07.22
HTML, CSS  (0) 2022.07.22

댓글