deteKt + Jetpack Compose Rulesがよさそうです
Ktlintは設定が楽だけど、細かい指定がしたくなるかもなので上位互換のdeteKt
SlackのCompose Lintsはアクティブなプロジェクトで使われていて精錬されているとは思うけど
本流と思われるJetpack Compose Rulesをとりあえず選択しました
Kotlin 静的解析ツール
・Ktlint
Android StudioのプラグインはまだK2 compilerに対応されてないです
gradleにplugin設定して、コンソールから実行した場合はK2 compiler有効にしていてもエラーになりませんでした
https://pinterest.github.io/ktlint/latest/install/setup/
・deteKt
こちらのAndroid StudioのプラグインはK2 compiler使っていてもエラーとかにはなりません
※ 対応済みかどうかは不明
https://detekt.dev/
https://github.com/detekt/detekt
Jetpack Compose向けの設定変更はこちらが参考になりました
https://android.benigumo.com/20231015/detekt/
https://detekt.dev/docs/introduction/compose/
[versions]
detekt = "1.23.6"
[plugins]
arturbosch-detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detekt" }
plugins {
alias(libs.plugins.arturbosch.detekt) apply false
}
plugins {
alias(libs.plugins.arturbosch.detekt)
}
detekt {
buildUponDefaultConfig = true
config.setFrom("$projectDir/config/detekt.yml")
}
config/detekt/detekt.ymlをプロジェクト直下に生成
./gradlew detektGenerateConfig
このファイルをTools – detekt – Files – Configration file(s)にも追加
FunctionNaming:
ignoreAnnotated: ['Composable'] # 追加
MagicNumber:
# ignorePropertyDeclaration: false
ignorePropertyDeclaration: true
TopLevelPropertyNaming:
# constantPattern: '[A-Z][_A-Z0-9]*'
constantPattern: '[A-Z][A-Za-z0-9]*'
LongParameterList:
# functionThreshold: 6
# OutlinedTextFieldなど引数が多いパターンに対応(とりあえず20)
functionThreshold: 20
# ignoreDefaultParameters: false
ignoreDefaultParameters: true
UnusedPrivateMember:
ignoreAnnotated: ['Preview'] # 追加
TooManyFunctions:
# ignoreAnnotatedFunctions: []
ignoreAnnotatedFunctions: ['Preview']
MaxLineLength:
# maxLineLength: 120
maxLineLength: 150
WildcardImport:
excludeImports:
- 'java.util.*'
- 'org.junit.Assert.*' # 追加
実行
./gradlew detekt
Jetpack Compose 静的解析ツール
・Jetpack Compose Rules
Twitterのが更新停止したため、引き継いで更新されているそうです更新は元Twitterの人がしているそうです
https://mrmans0n.github.io/compose-rules/
https://github.com/mrmans0n/compose-rules
dependencies {
detektPlugins "io.nlopez.compose.rules:detekt:<VERSION>"
}
以下にあるCompose用のルールをdetekt.ymlに追加
https://mrmans0n.github.io/compose-rules/detekt
・Compose Lints
Slackが引き継いで更新しているものもあるようです
https://github.com/slackhq/compose-lints
Android Studio
Set from…からKotlin obsolete IntelliJ IDEA code styleを指定してこれベースでカスタマイズ
・自動的にコードフォーマットを適応する
Tools – Actions on Save
Refomat code / Optimize imports
・ソースの最終行に改行挿入
Editor – General – On Save – Ensure every saved file ends with line break
・ifのelseやtryのcatchで改行
単に見やすいのと、コードをelseやcatch/finallyで折りたたみたいので改行したい派(少数派;;)
・NOTEコメントをTODOリストに表示
Editor – TODO に追加 ← ついでに追加しとく
Android Studio Koala Feature Drop 2024.1.2 built on August 23, 2024