[SpringBoot]/[Spring 강의]

Spring Kotlin에 Ktlint 적용하기

Hevton 2024. 6. 19. 17:04
반응형

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

반응형