从3.1.3升级到3.2.0的Android Gradle插件后,FindBugs停止工作。

6
我在我的Android项目中使用FindBugs进行静态代码分析。设置如下:
quality.gradle
plugins.apply('findbugs')

task findbugs(type: FindBugs) {
    ignoreFailures = false
    effort = 'max'
    reportLevel = 'high' // Report only high priority problems.

    classes = files("${project.projectDir}/build/intermediates/classes")
    source = fileTree('src/main/java')

    classpath = files()

    reports {
        xml.enabled = true
        html.enabled = false
    }

    excludeFilter = rootProject.file('quality/findbugs.xml')
} 

build.gradle:

subprojects {
    afterEvaluate {
        project.apply from: '../quality/quality.gradle'
        tasks.findByName('findbugs').dependsOn('assemble')
        tasks.findByName('check').dependsOn('findbugs')
    }
}

但是,当我将Gradle Android插件从3.1.3升级到3.2.0后,构建开始失败:
./gradlew clean build

> Task :app:findbugs FAILED
No files to be analyzed

...

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:findbugs'.
> Failed to run Gradle FindBugs Worker
   > Process 'Gradle FindBugs Worker 6' finished with non-zero exit value 1

降级到3.1.3后,构建又能够通过了。我在Gradle Android插件的更新日志中没有找到相关内容。有人能指出插件或我的设置有什么问题吗?

你尝试过停止Gradle守护进程吗?./gradlew --stop,然后再试一遍。 - stkent
@stkent 抱歉,它没有帮助,问题仍然存在。 - makovkastar
1个回答

16

经过简短调查,我发现Java类文件的位置已从build/intermediates/classes更改为build/intermediates/javac。新的FindBugs配置:

task findbugs(type: FindBugs) {
    ...
    classes = files("${project.projectDir}/build/intermediates/javac")
   ...
} 

奇怪的是,这个重大变化在Android Gradle插件的更改日志或者Gradle的更改日志中都没有提到。


1
这真的很有帮助。尝试了几个小时才弄清楚这个错误:无法运行Gradle FindBugs Worker,经过多次搜索,我找到了这个答案。非常感谢! - Anil Gorthy
我想补充一点,findbugs 做得很好,能够发布良好的调试信息以帮助诊断问题。你的回答对我有所帮助,但我的脚本还有另一个问题(是我的错误),我使用 --debug 运行它后,问题迎刃而解。 - Elliott

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接