🔍
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