ktlint?
・Kotlinの静的コード解析(Linter)
https://ktlint.github.io/
コードのフォーマットをいい感じに整えてくれるやつ
例: 1
if (condition){
// do something
}
↓
if (condition) {
// do something
}
例: 2
val count = 10
Log.d("count", "count: ${count}")
↓
val count = 10
Log.d("count", "count: $count")
Standard rules
EditorConfig
→独自の設定も可能!
https://github.com/shyiko/ktlint#editorconfig
導入方法
app/build.gradle
+ configurations {
+ ktlint
+ }
+ dependencies {
+ ktlint "com.github.shyiko:ktlint:0.20.0"
+ }
+ task ktlint(type: JavaExec, group: "verification") {
+ description = "Check Kotlin code style."
+ classpath = configurations.ktlint
+ main = "com.github.shyiko.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/shyiko/ktlint#usage for more
+ }
+ check.dependsOn ktlint
+ task ktlintFormat(type: JavaExec, group: "formatting") {
+ description = "Fix Kotlin code style deviations."
+ classpath = configurations.ktlint
+ main = "com.github.shyiko.ktlint.Main"
+ args "-F", "src/**/*.kt"
+ }
参考 : https://github.com/shyiko/ktlint#-with-gradle
導入後
./gradlew ktlint
→ スタイルのチェック
./gradlew ktlintFormat
→ スタイルをフォーマット
ビルド時にフォーマットが走るように
app/build.gradle
android {
...
applicationVariants.all {
ktlintFormat.execute()
}
...
}
※デバッグビルド時だけ実行するようにしたほうがいいかもしれない。
DEMO
↓ ビルド実行後
まとめ
- フォーマットが整うとレビューなども楽になって、捗るかもしれない
Dangerと組み合わせられるといいかもしれない
Android Studioのコードフォーマットとあまり違いがわからなかった