Ktlint とは
Ktlint とは、Kotlin コードの静的解析および自動フォーマットツールです。
Kotlin のコードスタイルガイドラインに基づいて、コードのフォーマットや品質をチェックし、一貫性のあるコードを維持するために使います。
CI/CD パイプラインに組み込んで、コードがリポジトリにプッシュされる前にルール違反を検出し、自動修正することも可能です。
前提条件
Spring Initializr で下記のように設定したプロジェクトがあることを前提とします
※ 2025-03 現在の情報を元に記載しています。
Project: Gradle - Kotlin
Language: Kotlin
Spring Boot: 3.4.3
Packaging: Jar
Java: 21
上記以外はデフォルトのままで OK。
ktlint の導入
Gradle プラグインの選定
Ktlint > Installation > Integrations > Gradle integration を参照すると、いくつかのプラグインが紹介されていますが、今回は jlleitschuh/ktlint-gradle
を使用します。
選定理由は以下のとおりです。
- Kotlin に特化しており、シンプルな構成で導入しやすい
- Gradle の公式プラグインレジストリに登録されているため、信頼性が高い
- 定期的にメンテナンスされており、最新の Gradle や Kotlin に対応している
build.gradle.kts に下記の設定を追加する
plugins {
id("org.jlleitschuh.gradle.ktlint") version "12.2.0" // 最新バージョンを指定
}
ktlint {
version.set("1.5.0") // 最新バージョンを指定
verbose.set(true)
reporters {
reporter(org.jlleitschuh.gradle.ktlint.reporter.ReporterType.CHECKSTYLE)
}
}
プラグインのバージョンを指定する
最新バージョンは、github.com/jlleitschuh/ktlint-gradle から確認できます。
Ktlint のバージョンを指定する
最新バージョンは、pinterest.github.io/ktlint から確認できます。
設定ごとのデフォルト値
詳細はKtlintExtension から確認できます。
設定名 | デフォルト値 | 説明 |
---|---|---|
version | 1.0.1 | ktlint のバージョン |
relative | false | レポートに相対パスを有効にするかどうか |
verbose | false | ktlint の実行結果を詳細に表示するかどうか |
debug | false | デバッグモードを有効にするかどうか |
android | false | Android プロジェクトかどうか |
outputToConsole | true | ktlint の結果をコンソールに出力するかどうか |
coloredOutput | true | コンソール出力にカラーを有効にするかどうか |
outputColorName | AUTO | ターミナル出力する色の指定 |
ignoreFailures | false | 警告があってもビルドを続行するかどうか |
enableExperimentalRules | false | 実験的なルールを有効にするかどうか |
reporters | [ReporterType.PLAIN] | 出力レポーターの形式を指定する |
[ReporterType.PLAIN]: PLAIN(標準テキスト)形式
(人間が読みやすい形式 で違反を表示)
[ReporterType.CHECKSTYLE]: Checkstyle 形式
(CI/CD パイプラインやツール(SonarQube, Jenkins など)で解析しやすい)
※ 2025-03 現在の情報を元に記載しています。最新情報は各公式ドキュメントを参照してください。
ktlint の実行
Gradle タスクを実行することで、ktlint が実行されます。
./gradlew ktlintFormat # コードを自動フォーマット
./gradlew ktlintCheck # コードのスタイルチェック
おわりに
これまで Ktlint の導入方法が分からず後回しにしていましたが、今回しっかりと向き合い、無事に導入することができました。
一度設定してしまえば、次のプロジェクトまで触れる機会が少ないため、忘れないうちに記事としてまとめました。
同じように Ktlint の導入で悩んでいる方の参考になれば幸いです。