Kotlin用Detekt Static Analyzer

静的アナライザーを愛する時が来ました! KotlinでDetektに会う


議論の対象がすでにわかっていて、プロジェクトの実装にのみ関心がある場合は、インストールポイントに直接進んでください。

これは何?


画像

調査中のプログラムを実際に実行せずに実行されたソフトウェア分析(動的分析とは対照的に)。 ウィキペディア

そして、あなた自身の言葉で-これはあなたが良いコードの規則に従うのを助ける便利なツールです。 不良コードの定義により、フィルターを非常に柔軟にカスタマイズできます。 各起動時に、検出された競合に関する統計データ、それらに関する情報を含む特定のレポートを生成し、競合が発生した場所とそのタイプを判断できます。

静的アナライザーは、レビュー担当者の作業を容易にし、一般に開発チームの時間を節約します。

優れたPRがありますが、著者が変数に対して長すぎる名前を付け、Detekt構成ファイルの多くの設定ルールの1つに簡単に簡単にしたり違反したりできるコードを書いたとします。ルールは複雑ではありませんが、そのようなPRのコードレビューは機能しません。
筆者はレビューアと同様にプロジェクトを再び切り替える必要がありますが、レビューを繰り返すことはほとんど喜びをもたらさないと確信しています。
高速で費用がかからない場合は自動化します。 (C)常識

静的アナライザーとは何ですか?


Javaの場合:


Kotlinの場合:


あなたの頭に浮かんだ質問に答えます。Kotlinのスポットバグは機能しません。

Detektをプロジェクトに導入する


Detectはいくつかの方法でインストールできます。

  1. AndroidStudioのプラグイン
  2. グラドル

Gradleを介した構成の方が柔軟性が高いと思います。

公式Webサイトでは、Gradleのバージョン、Androidプロジェクトかどうかに応じて、Detektをプロジェクトにインストールする方法がいくつかあります。 しかし、Androidプロジェクトを実装した私の経験では、 いくつかの指示が機能しません 。 現時点では、プロジェクトは1.0リリースに非常に近いです。 執筆時点での最新バージョンは、リリース候補1.0.0-RC14です。

だから。

Gradleの公式Webサイトにアクセスして、インストール手順を参照してください。

buildscript { repositories { maven { url "https://plugins.gradle.org/m2/" } } dependencies { classpath "io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.0.0-RC14" } } 

この決定により、Androidプロジェクトに準拠することをお勧めします。

Detektを別のファイルに分割して、既にapplyを適用することをお勧めしているので、おそらくapply:plugin行を削除したことに気づいたでしょう。

ステージ1:


そのため、このコードをアプリケーションレベルのbuild.gradleにコピーします。

そこで、 allprojectsブロック 、detekt設定を含むファイルのアプリケーション行を記述する必要があります。

 allprojects { apply from: "$rootDir/detekt.gradle" repositories { maven { url "https://plugins.gradle.org/m2/" } } } 

ステージ2:


次に、 detekt.gradleファイルを作成する必要があります

 apply plugin: "io.gitlab.arturbosch.detekt" detekt { toolVersion = "1.0.0-RC14" // Version of the Detekt CLI that will be used. When unspecified the latest detekt version found will be used. Override to stay on the same version. input = files("src/main/java") // The directories where detekt looks for input files. Defaults to `files("src/main/java", "src/main/kotlin")`. parallel = true // Builds the AST in parallel. Rules are always executed in parallel. Can lead to speedups in larger projects. `false` by default. filters = ".*build.*,.*/resources/.*,.*/tmp/.*" // Regular expression of paths that should be excluded separated by `;` or `,`. config = files("$rootDir/detekt-config.yml") // Define the detekt configuration(s) you want to use. Defaults to the default detekt configuration. reports { xml { enabled = true // Enable/Disable XML report (default: true) destination = file("build/reports/detekt.xml") // Path where XML report will be stored (default: `build/reports/detekt/detekt.xml`) } html { enabled = true // Enable/Disable HTML report (default: true) destination = file("build/reports/detekt.html") // Path where HTML report will be stored (default: `build/reports/detekt/detekt.html`) } } } 

ステージ3:


次に、 detekt-config.yml設定ファイルを作成する必要があります

これは公式サイトの標準構成ファイルです。

ステージ4:


コンソールを開き、コマンドgradlew detektを実行します

それだけです!


これで、プロジェクトの統計の準備が整いました。 それらはコンソールに表示され、パスに沿って見つけることもできます:{u_project} \ app \ build \ reports \ detekt

結論として


Jenkinsでの構築時にDetektを使用すると非常に便利です
クラスが2000を超えるプロジェクトでのタスク実行時間は4〜7秒です*。

静的アナライザーを使用すると、作業が少し簡単になります。 開発プロセスを加速し、ビジネスのお金を節約します。

参照:

Detekt GitHub
detektをセットアップする
default-detekt-config.yml

Source: https://habr.com/ru/post/J442500/


All Articles