Kotlinプログラミング言語の静的コード分析ツールであるdetekt を紹介します。インストール ガイド、ルールの説明、構成オプションなどについては、プロジェクトの Web サイトにアクセスしてください。
Kotlin プロジェクトのコード匂い分析。
高度に構成可能なルールセット。
ベースラインを生成して、新しい問題が発生しないようにしながら、レガシー プロジェクトの既存の問題を抑制します。
@Suppress
アノテーションを使用してソース ファイルの問題を抑制します。
さまざまなレポート形式のサポート: HTML、Markdown、SARIF、XML (Checkstyle)、カスタム レポート。
カスタム ルール セットとレポートを使用して検出を拡張します。
コード行、循環的複雑さ、コード匂いの数に基づいて複雑度をレポートします。
Gradle プラグインを使用した Gradle とのファーストパーティ統合。
検出するルールや機能をさらに追加するサードパーティのプラグインのコミュニティ。
変更履歴と移行ガイド
利用可能な CLI オプション
ルールセットとルールの説明
カスタムルールの作成と検出の拡張
コード内の問題の抑制
ベースラインファイルによる問題の抑制
検出の構成
Gradle 統合のサンプル例:
マルチプロジェクト (Kotlin DSL)
単一プロジェクト (Groovy DSL)
単一プロジェクト (非公式 Maven プラグイン)
カール -sSLO https://github.com/detekt/detekt/releases/download/v[バージョン]/detekt-cli-[バージョン]-all.jar java -jar detekt-cli-[バージョン]-all.jar --help
ここでdetektをインストールする他の方法を見つけることができます
プラグイン { id("io.gitlab.arturbosch.detekt") バージョン "[バージョン]"} リポジトリ { mavenCentral() } 検出する{ buildUponDefaultConfig = true // 事前設定のdefaultsallRules = false // 利用可能なすべての(不安定なものも含む)をアクティブ化します rules.config.setFrom("$projectDir/config/detekt.yml") // 実行するルールを定義するカスタム設定をポイントし、デフォルトの動作ベースラインを上書きします= file("$projectDir/config/baseline.xml") // 検出を導入する前に問題を抑制する方法} task.withType().configureEach { レポート { html.required.set(true) // 構造とコードを使用してブラウザで結果を確認します。snippetsxml.required.set(true) // 主に Jenkinssarif.required.set(true) のような統合用のチェックスタイルのような形式 // 標準化された SARIF 形式 ( https://sarifweb.azurewebsites.net/) との統合をサポートする GitHub Code Scanningmd.required.set(true) // 単純なマークダウン形式} }// Groovy DSLtasks.withType(Detekt).configureEach { jvmTarget = "1.8"} task.withType(DetektCreateBaselineTask).configureEach { jvmTarget = "1.8"}// または// Kotlin DSLtasks.withType ().configureEach { jvmTarget = "1.8"} task.withType ().configureEach { jvmTarget = "1.8"}
リリースについては Maven Central を、スナップショットについては sonatype を参照してください。
SNAPSHOT バージョンを使用する場合は、このドキュメント ページで詳細を確認できます。
Gradle 6.8.3 以降が最小要件です。ただし、他のツールの推奨バージョンと合わせた推奨バージョンは次のとおりです。
バージョンの検出 | グラドル | コトリン | AGP | Java ターゲット レベル | JDK 最大バージョン |
---|---|---|---|---|---|
1.23.7 | 8.10 | 2.0.10 | 8.5.2 | 1.8 | 21 |
以前の検出バージョンの推奨バージョンのリストはここにリストされています。
detekt 自体は、Gradle 設定に簡単に追加できるformatting
ルール セットとして ktlint のラッパーを提供します。
依存関係 { detektPlugins("io.gitlab.arturbosch.detekt:detekt-formatting:[バージョン]") }
同様に、検出から検出に使用できる追加のルール セットがあります。
依存関係 { detektPlugins("io.gitlab.arturbosch.detekt:detekt-rules-libraries:[バージョン]") detektPlugins("io.gitlab.arturbosch.detekt:detekt-rules-ruleauthors:[バージョン]") }
詳細については、Detekt マーケットプレイスをご覧ください。
同様に、カスタム拡張機能を検出に追加できます。
「貢献」を参照
検出に貢献してくれたすべての人々に感謝します!
で述べたように...
Detekt 2.0、そしてその先へ!
ドロイドコン ロンドン 2021 - 検出 - 一般教書
KotlinConf 2018 - Safe(r) Kotlin コード - Kotlin 用静的分析ツール Marvin Ramin 著
droidcon NYC 2018 - Kotlin の静的コード分析
コード品質ツールに関する Kotlin - @vanniktech によるスライド プレゼンテーション
ワークフローへの検出の統合
Kotlin コードの品質を確認する
Kotlin 静的分析ツール
まだ匂いを感じていますか?: Flauzino らによる Java と Kotlin 言語の比較研究。
Detekt によるソフトウェアのアンチパターンの防止
統合:
IntelliJの統合
SonarQube の統合
TCA(テンセントコードアナリシス)統合
コードシー
Error Prone、Checkstyle、PMD、CPD、Lint、Detekt、Ktlint を構成する Gradle プラグイン
Violations Lib は、静的コード分析などのレポート ファイルを解析するための Java ライブラリです。
sputnik は静的コード レビュー用の無料ツールであり、detekt のサポートを提供します。
Detekt CLI をラップする Detekt Maven プラグイン
Detekt CLI をラップする Detekt Bazel プラグイン
GitHub PR チェックと違反の自動コメントを容易にする Gradle プラグイン
コードファクター
GitHub アクション: すべて検出
GitHub アクション: 検出のセットアップ
サードパーティからのカスタム ルールとレポートは、 Detekt Marketplaceで見つけることができます。
JetBrains - IntelliJ + Kotlin の作成
PMD & Checkstyle & ktlint - しきい値とスタイル ルールのアイデア