반응형
NextStep 이펙티브 코틀린 with TDD, Refactoring, Clean Code에서 배운 ktlint 설정 법을 정리해보고자 합니다.
린트 검사로 코드 개선
테스트를 빌드하여 앱이 기능적 요구사항을 충족하는지 확인하는 것 외에도 린트를 통해 코드를 실행하여 코드에 구조적 문제가 없는지 확인하는 것이 중요하다.
ktlint를 프로젝트에 적용하기
Kotlin Coding Convention과 Android Kotlin Style Guide를 기본으로 따르고 있다.
Gradle Groovy 설정 (build.gradle)
buildscript {
repositories {
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath 'org.jlleitschuh.gradle:ktlint-gradle:10.2.1'
}
}
plugins {
id "org.jlleitschuh.gradle.ktlint" version "10.2.1"
}
Gradle Kotlin 설정 (build.gradle)
buildscript {
repositories {
maven(url = "https://plugins.gradle.org/m2/")
}
dependencies {
classpath("org.jlleitschuh.gradle:ktlint-gradle:10.2.1")
}
}
plugins {
id("org.jlleitschuh.gradle.ktlint") version "10.2.1"
}
IntelliJ에 Intellij IDEA formatter를 ktlint에 맞게 설정하는 방법 (권장)
$ ./gradlew ktlintApplyToIdea
IntelliJ를 사용하는 모든 프로젝트에 formatter를 적용하는 방법
$ ./gradlew ktlintApplyToIdeaGlobally
수동으로 ktlint를 이용하여 스타일 체크하기
$ ./gradlew ktlintCheck
./gradlew build의 하나의 싸이클로써 수행이 되고, 이 태스크는 ktlint를 이용하여 코드 스타일을 검사하고 스타일에 맞지 않으면 Build 해당 태스크에서 Fail이 된다
$ ./gradlew clean ktlintCheck
참고로 이전 build 디렉토리를 clean 후 ktlintCheck을 실행시켜주는 편이 좋다.
ktlint를 이용하여 스타일 체크함과 동시에 스타일 변환하기 (권장하지 않음)
$ ./gradlew ktlintFormat
이 태스크를 이용하면 스타일 검사 후, 스타일에 맞게 코드를 수정해 줌. 하지만, 의도치 않은 코드 수정이 일어날 수 있음.
되도록 사용하지 말것!
Git hook을 통해 ktlint 설정하기
Git hook이란?
커밋 전 혹은 후에 취해야 할 액션을 지정해 줄 수 있다.
커밋 하기 전에 ktlintCheck 태스크를 실행하도록 만들기
$ mkdir .git/hooks
$ ./gradlew addKtlintCheckGitPreCommitHook
이렇게하면 커밋을 실행하면 ktlint가 동작을 하면서 스타일에 맞지 않게 코드를 짰을 경우 커밋이 되지 않는다!
그래서 커밋을 하려면 코딩 스타일에 맞춰야 한다.
적용 된 Git hook 제거하기
$ rm .git/hooks/pre-commit
반응형