SpotBugs Gradle プラグインの使い方

この章では,Gradle のビルドスクリプトに SpotBugs を統合する方法について説明します。

SpotBugs Gradle プラグインを使う

Gradle プラグインの公式ページ の指示に従ってください。

SpotBugs PluginはGradleバージョン3をサポートしません。バージョン4以降を使用してください。

Gradle プラグインによって導入されたタスク

Gradle プラグインには,spotbugsMainspotbugsTest という2つのタスクが導入されています。

spotbugsMain タスクは,製品 Java ソースファイル用の SpotBugs を実行します。このタスクは classes タスクに依存します。spotbugsTest タスクは,テスト Java ソースファイル用の SpotBugs を実行します。このタスクは testClasses タスクに依存します。

SpotBugs Gradle プラグインは,check タスクからこれらのタスクにタスク依存関係を追加するので,単に ./gradlew check を実行すれば SpotBugs を実行できます。

Gradle プラグインの設定

現バージョンの SpotBugs Gradle プラグインは FindBugs Gradle プラグインと同じ方法で設定します。FindBugsExtension のドキュメントを参照してください。

たとえば,SpotBugs のバージョンを指定したいときは,次のように設定します。

spotbugs {
  toolVersion = '3.1.1'
}

SpotBugs Pluginを利用する

SpotBugs Pluginを利用するには,プラグインへの依存を次のように dependencies 内に記載してください:

dependencies {
  spotbugsPlugins 'com.h3xstream.findsecbugs:findsecbugs-plugin:1.7.1'
}

Android Gradle プラグインで SpotBugs タスクを生成する

SpotBugs Gradle プラグインは,sourceSet ごとにタスクを生成します。しかし,Android Gradle プラグインは,デフォルトでは sourceSet を生成しません (Java プラグインでは)。

sourceSet を明示的に定義すると,SpotBugs Gradle プラグインは sourceSet ごとにタスクを生成します。

sourceSets {
  // we define `main` sourceSet here, so SpotBugs Gradle Plugin generates `spotbugsMain` task
  main {
    java.srcDirs = ['src/main/java']
  }
}

tasks.withType(com.github.spotbugs.SpotBugsTask) {
  // configure automatically generated tasks
}