
KMPにKtlintを導入する

geDem
コードをいい感じにしたく、Ktlintを導入したのですが、少々手こずったのでメモします。(ktlintのパッケージをダウンロードして実行する方が簡単そう(?)でした。)
今回はとりあえずgradleで実行できるようにするのが目的です。
導入方法
libs.versions.toml[versions]
...
ktlint = "12.1.2"
[plugins]
...
ktlint = { id = "org.jlleitschuh.gradle.ktlint", version.ref = "ktlint"}
Sharedのgradle↓
build.gradleplugins {
...
// ktlint
alias(libs.plugins.ktlint)
}
// 任意:自動生成されるディレクトリをフォーマット対象外にする
ktlint {
filter {
exclude { it.file.path.contains("generated") }
}
}
exclude(**/generated/**)
でもよさそうですが、私の場合、一部のファイルのみフォーマット対象になってしまっていたので↑にしました。
Androidのgradle↓
build.gradleplugins {
// ktlint
alias(libs.plugins.ktlint)
}
実行方法
./gradlew ktlintFormat
エイリアスを作ると便利です。
おまけ
AndroidのUIをJetpackComposeで実装する場合、Composable関数は大文字から始まるのが慣習です。
しかし、Ktlintでは大文字開始の関数はエラーが出てフォーマットが失敗してしまいます。
なので、プロジェクトのルートに.editorconfig
という名前のファイルを作成し、下記を記載します。
root = true
[*.{kt,kts}]
ktlint_function_naming_ignore_when_annotated_with = Composable
🙂↕️最後まで読んでいただきありがとうございます🙂↕️