/ / ¿Cómo puedo generar informes tanto XML como HTML desde el complemento Findbugs en Gradle - gradle, findbugs?

¿Cómo puedo generar informes tanto XML como HTML desde el complemento Findbugs en Gradle - gradle, findbugs?

Ahora mismo tengo FindBugs en mi build.gradle como sigue

 apply plugin: "findbugs"
findbugs {
ignoreFailures = true
}
tasks.withType(FindBugs) {
reports {
xml.enabled = false
html.enabled = true
}
}

Pero si trato de habilitar tanto el informe HTML (para que los desarrolladores lo vean en sus máquinas) como el informe XML (para mis máquinas CI de Jenkins) obtengo lo siguiente

Las tareas de FindBugs solo pueden tener un informe habilitado, sin embargo, más de un informe fue habilitado Es necesario desactivar todos menos uno de ellos.

¿hay alguna forma / hack para permitirme generar ambos, incluso a través de dos tareas diferentes?

Respuestas

1 para la respuesta № 1

Probablemente puedas, pero en el estado actual de lacomplemento, parece que tiene que definir una tarea separada que se extiende desde FindBugs, pero tiene una configuración diferente a la estándar. El problema es que ejecutará FindBugs dos veces, y eso puede ser una penalización de rendimiento con cualquier base de código de tamaño decente.

Obviamente usted no puede usar tasks.withType(FindBugs) { ... } para configurar sus tareas, debe hacerlo explícitamente por nombre de tarea.

Nota: si está ejecutando esto en, por ejemplo. Jenkins, querrías que tu build.gradle genere el informe xml, y dejar que Jenkins genere el informe html a partir del informe xml. De esa manera no se ejecuta dos veces en tu compilación.


1 para la respuesta № 2

Resolví esto configurando mi script Gradle para que genere tareas de findbugs para informes XML y HTML y luego genere una tarea que depende de los otros dos.

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"
}
}
}

Tenga en cuenta que esto ejecutará la herramienta Findbugs dos veces, lo que generalmente no debería ser un problema para la integración continua (a menos que su base de código sea enorme).