
AndroidおよびJavaプロジェクト向けの静的解析ツールの簡単なセットアップ
⚠️ このプロジェクトのフォークは https://github.com/GradleUp/static-analysis-plugin/ でメンテナンスされています。 代わりに
com.gradleup.static-analysisプラグイン ID を使用して移行してください。
異なる Android、Java、または Kotlin プロジェクト間で静的解析ツールの同じ設定を簡単に適用できる Gradle プラグイン。
このプラグインを使用すると、ビルド速度にオーバーヘッドがゼロになるように、Task Configuration Avoidance をサポートしています。
Gradle は、一連の組み込みプラグインを介して、多くの一般的な静的解析 (Checkstyle、PMD、FindBugs など) をサポートしています。 Android モジュールでこれらのプラグインを使用するには、Android プラグインが採用しているモデルと Java プラグインのモデルとの違いを補うための追加のセットアップが必要になります。
gradle-static-analysis-plugin は以下を提供することを目的としています:
このプラグインは、Java、Kotlin、Android プロジェクト向けのさまざまな静的解析ツールをサポートしています:
CheckstylePMDFindBugs [非推奨] [Gradle 6.0 で削除されました]SpotBugsDetektAndroid LintKtLintツールの利用可能性はプラグインが適用されるプロジェクトに依存することに注意してください。詳細については、サポートされているツール のページを参照してください。
検討中のすべてのツールについては、課題 を参照してください。
Android プロジェクトは、組み込みの静的解析ツールプラグインでサポートされている Java モデルと互換性のない Gradle モデルを使用しています。
Android プロジェクトに gradle-static-analysis-plugin を適用すると、追加の手間をかけずに、必要なすべてのタスクが作成され、正しく構成されるようになります。
jCenter からクラスパス依存関係としてプラグインを適用
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.novoda:gradle-static-analysis-plugin:1.2'
}
}
apply plugin: 'com.novoda.static-analysis'
または Gradle プラグインリポジトリ から:
plugins {
id 'com.novoda.static-analysis' version '1.2'
}
プラグインの典型的な設定は次のようになります:
staticAnalysis {
penalty {
maxErrors = 0
maxWarnings = 0
}
checkstyle { }
pmd { }
findbugs { }
spotbugs { }
detekt { }
lintOptions { }
}
これにより、すべてのツールがデフォルト設定で有効になり、evaluateViolations タスクが作成されます。./gradlew evaluateViolations タスクを実行すると、設定されたすべてのツールが実行され、レポートがコンソールに出力されます。より高度な設定については、高度な使用法 および サポートされているツール のページを参照してください。
2 つのサンプル Android プロジェクトが利用可能です。1 つは通常のアプリで構成されており こちら から入手できます。もう 1 つはマルチモジュールセットアップで構成されており こちら から入手できます。両方のサンプルプロジェクトは、Checkstyle、FindBugs、SpotBugs、PMD、Lint、Ktlint、Detekt を備えたセットアップを示しています。
スナップショットビルドは develop から自動的に、JCenter と同期されていない リポジトリ にデプロイされます。
スナップショットビルドを利用するには、追加の Maven リポジトリを次のように追加します:
repositories {
maven {
url 'https://dl.bintray.com/novoda-oss/snapshots/'
}
}
最新のスナップショットバージョンは、次の リンク から確認できます。
このプロジェクトは、多くの Novoda プロジェクトやその他の外部プロジェクトで定期的に使用されており、既知の重大な問題はありません。
将来の改善点や新しいツールの統合については、リポジトリの 課題トラッカー を参照してください。