Точно сега имам FindBugs в моя build.gradle, както следва
apply plugin: "findbugs"
findbugs {
ignoreFailures = true
}
tasks.withType(FindBugs) {
reports {
xml.enabled = false
html.enabled = true
}
}
Но ако се опитам да разреша както HTML доклада (за разработчиците да виждат на техните машини), така и XML доклада (за моите джинкин CI машини) получавам следното:
Задачите на FindBugs могат да имат само един отчет, но повече от един отчет бе активиран. Трябва да деактивирате всички, с изключение на един.
има ли някакъв начин / рана да ми позволи да генерирам и двете - дори чрез две различни задачи?
Отговори:
1 за отговор № 1Вероятно може, но в текущото състояние наplugin, изглежда, че трябва да дефинирате отделна задача, която се простира от FindBugs, но има различна конфигурация от стандартната. Проблемът е, че наистина ще стартирате FindBugs два пъти и това може да бъде наказание за представяне с всяка кодова база с приличен размер.
Очевидно не можете да използвате tasks.withType(FindBugs) { ... }
За да конфигурирате задачите си, трябва да го направите по име на задача.
Забележка: ако използвате това, напр. Дженкинс, бихте искали вашето build.gradle да генерира xml доклада, и нека Дженкинс да генерира html доклада от xml. По този начин тя не се изпълнява два пъти в изграждането.
1 за отговор № 2
Реших това чрез конфигуриране на моя Gradle скрипт, така че да генерира задачи на findbugs за XML и HTML отчети, след което генерира задача, която зависи от другите две.
def findbugsTask = task("findbugs") {
group "Verification"
}
[ "Html", "Xml" ].each { reportType ->
findbugsTask.dependsOn task("findbugs${reportType}", type: FindBugs) {
dependsOn "compileJavaWithJavac"
reports {
html.enabled = reportType == "Html"
xml.enabled = reportType == "Xml"
}
}
}
Имайте предвид, че това ще стартира инструмента Findbugs два пъти, което обикновено не би трябвало да е проблем за непрекъсната интеграция (освен ако базата ви на код е огромна).