如何使用gradle脚本生成findbugs报告?

Boo*_*thi 9 android findbugs checkstyle android-studio build.gradle

我正在尝试使用findbugs插件生成报告,因为我写了下面提到的gradle脚本.我正在设置报告的目标文件夹,但各个文件夹没有生成.所以,如何解决这个问题.

我可以使用导出按钮手动生成报告,但我想从gradle脚本生成.

是否可以从gradle脚本生成报告?

我的gradle版本 - 2.2.1

task findbugs(type: FindBugs) {
    ignoreFailures = true
    effort = "max"
    reportLevel = "high"
    classes = files("${project.buildDir}/findbugs")
    source 'src'
    include '**/*.java'
    exclude '**/gen/**'

    reports {
        xml.enabled = true
        xml {
            destination "$project.buildDir/reports/findbugs/findbugs.xml"
            xml.withMessages true
        }
    }
    classpath = files()
}
Run Code Online (Sandbox Code Playgroud)

luc*_*ler 11

我设法使用以下gradle脚本片段使用最新的gradle运行findbugs:

apply plugin: 'findbugs'

task customFindbugs(type: FindBugs) {
    ignoreFailures = true
    effort = "default"
    reportLevel = "medium"
    classes = files("$project.buildDir/intermediates/classes")
    excludeFilter = file("$rootProject.rootDir/config/findbugs/exclude.xml")

    source = fileTree('src/main/java/')
    classpath = files()
    reports {
        xml.enabled = false
        xml.withMessages = true
        html.enabled = !xml.isEnabled()
        xml.destination "$project.buildDir/outputs/findbugs/findbugs-output.xml"
        html.destination "$project.buildDir/outputs/findbugs/findbugs-output.html"
    }
}
// UPDATE: renamed the task to customFindbugs and made it automatically be called when build is called
build.dependsOn customFindbugs
Run Code Online (Sandbox Code Playgroud)

我的exclude.xml如下所示:

<FindBugsFilter>
    <Match>
       <Class name="~.*R\$.*"/>
    </Match>
    <Match>
        <Class name="~.*Manifest\$.*"/>
    </Match>
    <Match>
        <Class name="~.*_\$.*"/>
    </Match>
</FindBugsFilter>
Run Code Online (Sandbox Code Playgroud)

而最后一项检查用于省略AndroidAnnotations生成的类,您很可能不会使用此检查...

之后我就可以执行任务了

./gradlew customFindbugs
Run Code Online (Sandbox Code Playgroud)

或者自从我的代码更新后

./gradlew build
Run Code Online (Sandbox Code Playgroud)