geDemのアバターアイコン
geDem
 Blog
記事のカバー写真

KMPにKtlintを導入する

geDemのアバターアイコン
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

エイリアスを作ると便利です。

【時短】zshでエイリアスを設定する方法

おまけ

AndroidのUIをJetpackComposeで実装する場合、Composable関数は大文字から始まるのが慣習です。

しかし、Ktlintでは大文字開始の関数はエラーが出てフォーマットが失敗してしまいます。

なので、プロジェクトのルートに.editorconfigという名前のファイルを作成し、下記を記載します。

root = true

[*.{kt,kts}]
ktlint_function_naming_ignore_when_annotated_with = Composable

🙂‍↕️最後まで読んでいただきありがとうございます🙂‍↕️