要将SpotBugs配置为Android build.gradle
文件,以下表达式似乎无效。
我不擅长使用Groovy脚本,但是可能会有更好的方法。
tasks.withType(com.github.spotbugs.SpotBugsTask) {
classes = fileTree("${project.buildDir}/intermediates/classes")
.plus(fileTree("${rootProject.rootDir}/../subproject-one/app/build/intermediates/classes"))
.plus(fileTree("${rootProject.rootDir}/../subproject-two/app/build/intermediates/classes"))
.plus(fileTree("${rootProject.rootDir}/../subproject-three/app/build/intermediates/classes"))
}
实际上,所有子项目fileTree
的目标都是${project.buildDir}/intermediates/classes
的迭代子项目。
左侧的classes
是org.gradle.api.file.FileCollection
类型,指的是SpotBugs gradle plugin source code
我的审判如下;
// not working
classes = rootProject.subprojects.collect({
proj -> fileTree("${proj.buildDir}/intermediates/classes") })
.stream().asType(org.gradle.api.file.FileCollection.class)
它给出了以下错误;
无法确定任务':app:spotbugsMain'的依赖关系。
>没有方法签名:java.util.stream.ReferencePipeline $ Head.getBuildDependencies()适用于参数类型:()值:[]
我知道为什么会出现这样的错误,但是我无法想象如何正确修复它。 我该如何实现?
答案 0 :(得分:0)
假设SpotBugsTask具有您可以执行的setClasses(FileCollection)方法
tasks.withType(com.github.spotbugs.SpotBugsTask) {
List<File> dirs = subprojects.collect { it.file("${it.buildDir}/intermediates/classes") }
classes = files(dirs)
}
请参阅iterating on a list的groovy文档