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が出力されます。
参考サイト
SpotBugs 3.1から4.0への移行ガイド — spotbugs 4.9.4 ドキュメント
SpotBugsExtension (SpotBugs Gradle Plugin)

KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^



コメント