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

时间:2015-03-24 10:47:17

标签: android android-studio build.gradle checkstyle findbugs

我正在尝试使用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()
}

1 个答案:

答案 0 :(得分:11)

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

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

我的exclude.xml如下所示:

<FindBugsFilter>
    <Match>
       <Class name="~.*R\$.*"/>
    </Match>
    <Match>
        <Class name="~.*Manifest\$.*"/>
    </Match>
    <Match>
        <Class name="~.*_\$.*"/>
    </Match>
</FindBugsFilter>

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

之后,我可以通过

运行任务
./gradlew customFindbugs

或者仅仅通过

更新我的代码
./gradlew build