-
Notifications
You must be signed in to change notification settings - Fork 0
Java Code Convention 적용하기
Unix 형식의 새줄 문자(newline)인 LF(Line Feed, 0x0A)을 사용한다.
Windows 형식인 CRLF가 섞이지 않도록 편집기와 GIT 설정 등을 확인한다. MDN Docs: CR LF
CR(Carriage Return): 커서를 현재 줄에서 가장 왼쪽으로 보냄
LF(Line Feed): 줄 바꿈
- Windows: CRLF
- Unix-like: LF
OS에 따라 새줄 문자가 바뀌는 경우, 수정 내역이 없는 파일에 대해 수정된 것으로 인식될 가능성이 존재한다.
따라서 협업간 이러한 문제가 발생하는 것을 방지하기 위한 설정이 필요하다.
- IntelliJ에서 프로젝트를 생성하면, 새줄 문자는 LF로 표기된다.
- 원격 저장소에서 프로젝트를 clone하면, 새줄 문자는 CRLF로 표기된다.
.gitattribute
*.java text eol=lf
*.md text eol=lf
*.gitattribute text eol=lf
위 파일을 프로젝트 최상단에 추가한다.
editorconfig는 여러 개발자가 하나의 프로젝트에서 작업할 때, 동일한 코드 스타일을 유지할 수 있게 도와준다.
IntelliJ는 별도 플러그인 설치가 필요없고, Eclipse는 플러그인 설치가 필요하다.
.editorconfig
root = true
[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
[*.java]
indent_size = 4
tab_width = 4
[*.{yml,yaml}]
indent_size = 2
이 파일을 프로젝트 최상단에 추가한다.
Checkstyle은 코드 컨벤션을 검사하는 도구이다.
Maven 혹은 Gradle 등의 빌드 도구를 활용하여 컨벤션을 위배한 파일이 존재하면 빌드를 실패하게 만들 수 있다.
IDE를 사용해서 간편하게 XML 파일을 주입하는 방식으로 사용할 수도 있다.
plugins {
id 'org.ec4j.editorconfig' version '0.0.3'
id 'checkstyle'
id 'java'
}
editorconfig {
excludes = ['build']
}
checkstyle {
maxWarnings = 0 // 코드 컨벤션 어길 시, 빌드 실패
configFile = file("${rootDir}/titi-checkstyle-rules.xml")
configProperties = ["suppressionFile" : "${rootDir}/titi-checkstyle-suppressions.xml"]
toolVersion = "9.2"
}
check.dependsOn editorconfigCheck
compileJava.options.encoding = 'UTF-8'
compileTestJava.options.encoding = 'UTF-8'
Notion에서 규칙 파일 두 개를 내려받아 프로젝트 최상단에 추가한다.
IntelliJ에서 CheckStyle-IDEA 플러그인을 설치한다.
Settings > Tools > Checkstyle 에서 아래와 같이 설정한다.
Configuration File에 titi-checkstyle-rules.xml 파일을 추가한다.
다음 창에서 Property Value에 titi-checkstyle-suppressions.xml 을 추가한다.
마지막으로 추가한 Configuration File을 Active한다.
하단 CheckStyle탭에서 단일 파일/모듈/프로젝트 범위로 스캔을 할 수 있다.
탭 상단 Rules에서 생성한 규칙을 선택하고 스캔하면 아래와 같이 규칙에 위반한 내용을 상세하게 보여준다.
인덴트 규칙을 어기고 ./gradlew build
명령을 실행한 결과, 성공적으로 빌드에 실패한 것을 확인할 수 있다.
또한 .editorconfig
파일 규칙에 어긋난 경우는 ./gradlew editorconfigFormat
명령을 실행하면 자동으로 컨벤션에 맞게 수정해준다.
Settings > Editor > Code Style > Java 에서 Scheme를 titi-formatter.xml
파일로 설정한다.
이후 Ctrl + Alt + L
단축키를 누르면 자동 정렬 시 위의 formatter에 맞게 정렬된다.