[Android/kotlin] ktlint 설치
Android/Kotlin

[Android/kotlin] ktlint 설치


📌 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
...