Чтобы настроить SpotBugs на файл Android build.gradle
, приведенное ниже выражение кажется очень неэффективным.
Я не очень хорош в отличном сценарии, но может быть лучший способ сделать это.
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
относится к исходному коду плагина Grab SpotBugs
Мое испытание, как показано ниже;
// 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 () применимо для типов аргументов: () значения: []
Я знал, почему это дает такую ошибку, но я не мог представить, как исправить это правильно.
Как мне этого добиться?