/ / Как мога да генерирам XML и HTML отчети от плъгина Findbugs в Gradle - gradle, findbugs

Как мога да генерирам както XML, така и HTML отчети от приставката Findbugs в Gradle - gral, findbugs

Точно сега имам 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 два пъти, което обикновено не би трябвало да е проблем за непрекъсната интеграция (освен ако базата ви на код е огромна).