我想编写这样一个gradle任务(使用 Findbugs 插件)如果发现任何 Findbugs 违规但仅在完成分析之后才会失败。如果我执行ignoreFailures=true
任务完全失败,如果我将其设为false,则一旦找到第一个问题,任务就会失败。我希望该任务执行完整的分析,并且只有在完成任何违规后才能完成。
答案 0 :(得分:7)
你是对的,添加ignoreFailures=true
会阻止任务失败。因此,应该使用这个选项,如果发现了错误,应该稍后检查。
此脚本完成工作:
apply plugin: 'java'
apply plugin: 'findbugs'
repositories {
mavenCentral()
}
findbugs {
ignoreFailures = true
}
task checkFindBugsReport << {
def xmlReport = findbugsMain.reports.xml
def slurped = new XmlSlurper().parse(xmlReport.destination)
def bugsFound = slurped.BugInstance.size()
if (bugsFound > 0) {
throw new GradleException("$bugsFound FindBugs rule violations were found. See the report at: $xmlReport.destination")
}
}
findbugsMain.finalizedBy checkFindBugsReport
Here可以找到完整且有效的例子。要查看它是否有效,请删除incorrect.java
文件 - 然后找不到错误,并且不会抛出任何异常。
答案 1 :(得分:0)
您也可以使用Violations Gradle Plugin。然后,您还可以在构建失败之前运行checkstyle或任何其他分析。
task violations(type: se.bjurr.violations.gradle.plugin.ViolationsTask) {
minSeverity = 'INFO'
detailLevel = 'VERBOSE' // PER_FILE_COMPACT, COMPACT or VERBOSE
maxViolations = 0
// Many more formats available, see: https://github.com/tomasbjerre/violations-lib
violations = [
["FINDBUGS", ".", ".*/findbugs/.*\\.xml\$", "Findbugs"]
]
}
check.finalizedBy violations