🔍
Twitter Jetpack Compose Rules のktlintを試す
話題になってたので試してみた。
- Android Studioから新規Composeプロジェクトを作成
 - そこにtwitter/compose-rulesを導入していく
 - ktlint実行時にcompose ruleがチェックされればOK
 
導入する前に
公式ドキュメントを見ると、使い方としていくつかのlintツールが紹介されている。
基本的に、これらのツールと組み合わせてcompose-rulesを使用するようだ。
- Kotlinter
 - ktlint-gradle
 - spotless
 - ktlint CLI
 - ktlint (unofficial) IntelliJ plugin
 
今回は先頭にあったKotlinterと一緒にcompose-rulesを導入していく。
導入してみる
Kotlinterの導入
まずはプロジェクトにKotlinterを追加する。
Kotlinterドキュメントのmulti-module-and-androidを参照しながら導入した。
build.gradle
plugins {
     id 'com.android.application' version '7.4.0-beta02' apply false
     id 'com.android.library' version '7.4.0-beta02' apply false
     id 'org.jetbrains.kotlin.android' version '1.7.0' apply false
+    id 'org.jmailen.kotlinter' version "3.12.0" apply false
}
app/build.gradle
 plugins {
     id 'com.android.application'
     id 'org.jetbrains.kotlin.android'
+    id 'org.jmailen.kotlinter'
}
ここでsyncして、formatKotlinかlintKotlinを実行してみてKotlinterの動作を確かめる。
$ ./gradlew formatKotlin
lintエラーっぽいのが見つかればOK
twitter/compose-rules/ktlin の導入
公式ドキュメントを見ながら導入する。
build.gradle
 buildscript {
+    dependencies {
+        classpath "com.twitter.compose.rules:ktlint:0.0.18"
+    }
これで導入完了、思ったより簡単だった。
Compose Ruleのktlintを実行してみる
$ ./gradlew lintKotlin
> Task :app:lintKotlinMain FAILED
/Users/k_ikemura/dev/android-compose-rules-sample/app/src/main/java/com/sample/composerules/MainActivity.kt:30:5: Lint error > [twitter-compose:modifier-missing-check] This @Composable function emits content but doesn't have a modifier parameter.
See https://twitter.github.io/compose-rules/rules/#when-should-i-expose-modifier-parameters for more information.
FAILURE: Build failed with an exception.
無事にcompose ruleが指摘されている。
error > [twitter-compose:modifier-missing-check] This @Composable function emits content but doesn't have a modifier parameter.
modifierを持ちなさい、という内容だった。
ちゃんとlint ruleのurlも表示されており、こちらも目を通しておくと良さそう
試したGitHub Repository
Discussion