📌 Ktlint 설치
kotlin 언어로 코드를 작성하다 보면, 작성 표준에 잘 맞추어 작성하고 있는지 궁금할 때가 있다.
이는 구글 공식 가이드라인과 kotlin 공식 가이드라인이 존재하기 때문에, 이 문서들로도 해결된다.
그러나 실제로 코드를 짜다보면, 이를 간과하고 작성하게 되는 부분이 많다.
하지만 ktlint를 사용하게 되면, 작성한 코드에 대해 검사를 실시해주어 곧바로 수정이 가능하다.
또한 지속적으로 자각하여 코딩을 진행할 수 있게 된다.
📍 코드 검사 예시
> Task :app:ktlint
../Adapter.kt:3:1: Imports must be ordered in lexicographic order without any empty lines in-between
../Adapter.kt:9:1: Wildcard import (cannot be auto-corrected)
../Adapter.kt:1:1: File must end with a newline (\n)
../Adapter.kt:4:1: Unused import
../Adapter.kt:13:1: Unused import
../Adapter.kt: Unused import
../Adapter.kt:15:1: Unused import
../Adapter.kt:17:1: Unused import
...
🕹 설치 방법
build.gradle (project: 프로젝트명) 에 아래부분을 추가해주고 try sync 해준다.
$ build.gradle (Project: 프로젝트명)
...
subprojects {
repositories {
jcenter()
}
configurations {
ktlint
}
afterEvaluate { project ->
check.dependsOn ktlint
}
dependencies {
ktlint "com.pinterest:ktlint:0.35.0"
// additional 3rd party ruleset(s) can be specified here
// just add them to the classpath (e.g. ktlint 'groupId:artifactId:version') and
// ktlint will pick them up
}
task ktlint(type: JavaExec, group: "verification") {
description = "Check Kotlin code style."
classpath = configurations.ktlint
main = "com.pinterest.ktlint.Main"
args "src/**/*.kt"
// to generate report in checkstyle format prepend following args:
// "--reporter=plain", "--reporter=checkstyle,output=${buildDir}/ktlint.xml"
// see https://github.com/pinterest/ktlint#usage for more
}
/** 스타일 수정 후 자동으로 수정해 줌 */
task ktlintFormat(type: JavaExec, group: "formatting") {
description = "Fix Kotlin code style deviations."
classpath = configurations.ktlint
main = "com.pinterest.ktlint.Main"
args "-F", "src/**/*.kt"
}
}
...
안드로이드 스튜디오 오른쪽에 Gradle 탭을 펼쳐보면 아래와 같이 Tasks가 추가되어져 있는 것을 볼 수 있다.
🚓 실행
Gradle 메뉴에서 ktlint나 ktlintFormat을 눌러 실행하는 방법도 있고,
./gradlew ktlint로 실행하는 방법이 있다.
실행 시 아래와 같이 Console에 띄워지면서 kotlin convention 검사 결과를 알 수 있게 된다.
> Task :app:ktlint
../Adapter.kt:3:1: Imports must be ordered in lexicographic order without any empty lines in-between
../Adapter.kt:9:1: Wildcard import (cannot be auto-corrected)
../Adapter.kt:1:1: File must end with a newline (\n)
../Adapter.kt:4:1: Unused import
../Adapter.kt:13:1: Unused import
../Adapter.kt: Unused import
../Adapter.kt:15:1: Unused import
../Adapter.kt:17:1: Unused import
...
'Android > Kotlin' 카테고리의 다른 글
[Kotlin] 함수형 프로그래밍 (0) | 2020.01.06 |
---|---|
[Kotlin] Coroutine 연습 문제 (0) | 2020.01.03 |
[Android/kotlin] Layout Margin dp 단위 변경하기 (1) | 2019.11.25 |
[Android] Retrofit With Coroutine (In MVVM Architecture) (5) | 2019.08.22 |
Android Coroutine 정리 (0) | 2019.08.22 |