Spring Bootのbuild.gradleのタスクでSpotBugsレポート出力する方法

Spring Bootのbuild.gradleのタスクでSpotBugsレポート出力する方法

GradleタスクでSpotBugsのレポートをHTML形式で出力します。

SpotBugs4.0.0

環境 バージョン
Spring Boot 2.2.5.RELEASE
Gradleラッパー 6.2.2
Java 11
SpotBugs 4.0.0

build.gradle

plugins {
  id 'org.springframework.boot' version '2.2.5.RELEASE'
  id 'io.spring.dependency-management' version '1.0.9.RELEASE'
  id 'java'
  id 'com.github.spotbugs' version '3.0.0'
}

// 省略

spotbugs {
  toolVersion = '4.0.0'
  ignoreFailures = true
  reportsDir = file("$project.buildDir/reports")
  effort = "max"
  reportLevel = "high"
}

sourceSets {
  main {
    java.srcDirs = ['src/main/java']
  }
}

tasks.withType(com.github.spotbugs.SpotBugsTask) {
  reports.xml.enabled = false
  reports.html.enabled = true
}

build.gradleに記述しているディレクトリは以下の場所になります。

変数
$project.buildDir C:\workspace\gradle-proj\build

これでgradlew.bat tasks --allを実行すれば、spotbugsMain,spotbugsTestがタスク追加されていることがわかります。

レポートは、reportDirプロパティで指定された場所、もしくはデフォルトだとbuild\reports配下に出力されます。

SpotBugsのプラグイン(fb-contrib)を使う

レポート出力する際にfb-contribを使ってレポート出力します。

dependenciesに3行追加します。

plugins {
    id 'org.springframework.boot' version '2.2.5.RELEASE'
    id 'io.spring.dependency-management' version '1.0.9.RELEASE'
    id 'java'
    id 'com.github.spotbugs' version '3.0.0'
}

dependencies {
  // 省略
  compileOnly 'com.github.spotbugs:spotbugs:4.0.0'
  spotbugs configurations.spotbugsPlugins.dependencies
  spotbugsPlugins  'com.mebigfatguy.fb-contrib:fb-contrib:7.4.7'
}
spotbugs {
    toolVersion = '4.0.0'
    ignoreFailures = true
    reportsDir = file("$project.buildDir/findbugsReports")
    effort = 'max'
    reportLevel = 'medium'
}

sourceSets {
  main {
    java.srcDirs = ['src/main/java']
  }
}

tasks.withType(com.github.spotbugs.SpotBugsTask) {
  reports.xml.enabled = false
  reports.html.enabled = true
  pluginClasspath = project.configurations.spotbugsPlugins // 追加
}

SpotBugs4.6.0

環境 バージョン
Spring Boot 2.5.12
Gradleラッパー 7.4.1
Java 11
SpotBugs 4.6.0

SpotBugs4.6.0でレポート出力します。

build.gradle

plugins {
  id 'org.springframework.boot' version '2.5.12'
  id 'io.spring.dependency-management' version '1.0.11.RELEASE'
  id 'java'
  id 'com.github.spotbugs' version '5.0.6'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

repositories {
  mavenCentral()
}

dependencies {
  implementation 'org.springframework.boot:spring-boot-starter-web'
  testImplementation 'org.springframework.boot:spring-boot-starter-test'
  compileOnly "com.github.spotbugs:spotbugs:4.6.0"
  spotbugsPlugins "com.mebigfatguy.fb-contrib:fb-contrib:7.4.7"
}

tasks.named('test') {
  useJUnitPlatform()
}

spotbugs {
  toolVersion = "4.6.0"
  spotbugsTest.enabled = false
}
spotbugsMain {
  reports {
    html {
      enabled = true
    }
  }
}

build\reports\spotbugs配下にmain.htmlが出力されます。

Spring Bootのbuild.gradleのタスクでSpotBugsレポート出力する方法

参考サイト

SpotBugs 3.1から4.0への移行ガイド — spotbugs 4.7.3 ドキュメント
SpotBugsExtension (SpotBugs Gradle Plugin)

コメント

タイトルとURLをコピーしました