Spring Kotlin에 Ktlint 적용하기
Ktlint는 Kotlin 언어의 공식적인 컨벤션을 준수할 수 있도록 스타일을 검사해 주는 도구입니다.
깔끔한 코드를 작성하는데 있어서의 약속이자 규약이기도 합니다.
꼭 지켜야 하는 것은 아니지만, 가독성을 고려하여 협업을 위해선 권장되는 방식입니다.
우아한테크코스 6기를 진행하는 동안에도 현직자분들과 코드리뷰를 할 때 Ktlint를 적극적으로 활용하고 있습니다.
개행이나 들여쓰기가 제각각 멋대로라면 코드 읽기가 불편하겠죠? 협업을 한다면 적극적으로 활용하시길 바랍니다!
build.gradle.kts에 다음 의존성을 추가합니다.
plugins {
id("org.jlleitschuh.gradle.ktlint") version "12.1.0"
}
그러면 설정이 끝났습니다!
2가지 방법으로 사용합니다
대표적으로 사용하는 방법은 크게 두 가지입니다.
ktlintCheck는 현재 코딩 컨벤션 스타일에 문제가 있는 부분을 지적해 주는 명령어입니다.
./gradlew ktlintCheck
체크를 통해 문제가 발견되었다면 빨간색으로 다음과 같이 안내되고
체크를 통해 문제가 발견되지 않았다면 다음과 같이 초록색으로 안내됩니다.
ktlintFormat(=ktFormat)은 문제점을 발견하고 수정까지 해주는 명령어입니다.
./gradlew ktFormat
./gradlew ktlintFormat
hook를 걸어서 편하게 사용할 수 있습니다
근데 매번 이렇게 수동으로 린트를 적용하는게 불편할 수도 있습니다.
이럴땐 commit 에 hook를 걸어놓으면 commit 할 때 자동으로 ktlintCheck 또는 ktlintFormat을 할 수 있습니다.
오른쪽에 gradle 을 누르고 help에서 두 가지 설정 중 원하는 것을 더블클릭 해주면 됩니다.
editconfig로 커스터마이징하기
ktlint에서 기본적인 제한사항을 커스터마이징 할 수 있습니다.
팀에서 사용하는 협업 방식이나 구조에 따라서 이를 커스터마이징해서 사용하면 됩니다.
예로, 기본적으로 import 와일드카드를 금지하고 있는데, 이를 풀어주는 등의 목적으로 커스터마이징 할 수 있습니다.
프로젝트의 루트 디렉터리에 다음과 같은 파일을 만들어줍니다.
// .editorconfig 파일
root = true
[*]
charset=utf-8
end_of_line=lf
indent_style=space
indent_size=4
insert_final_newline=true
disabled_rules=no-wildcard-imports,import-ordering,comment-spacing
[*.{kt,kts}]
insert_final_newline=false
만약 이게 적용되지 않는다면, 최신 버전에서 적용되지 않는 문제가 있을 수 있습니다.
disable_rules 은 deprecated 되었기 때문인데요
이럴땐 .ktlint.yml 파일에서 해줘야합니다.
disabled_rules:
- no-wildcard-imports
참고
https://velog.io/@eastperson/Kotlin-Spring-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B02-Kotlin-Lint