如何编写自定义 gradle 任务以不忽略 Findbugs 违规但在分析完成后失败
How to write a customized gradle task to not to ignore Findbugs violations but fail after the analysis is completed
我想写这样一个 gradle 任务(使用 Findbugs 插件)如果有任何 Findbugs 违规发现 ,但仅在完成分析后发现 。如果我这样做 ignoreFailures=true
任务根本不会失败,如果我将其设为 false 则任务会在发现第一个问题后立即失败。我希望任务执行完整的分析,只有在发现任何违规行为后才失败。
你说得对,添加 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
文件 - 然后没有发现错误并且 - 没有抛出异常。
您也可以为此使用 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
我想写这样一个 gradle 任务(使用 Findbugs 插件)如果有任何 Findbugs 违规发现 ,但仅在完成分析后发现 。如果我这样做 ignoreFailures=true
任务根本不会失败,如果我将其设为 false 则任务会在发现第一个问题后立即失败。我希望任务执行完整的分析,只有在发现任何违规行为后才失败。
你说得对,添加 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
文件 - 然后没有发现错误并且 - 没有抛出异常。
您也可以为此使用 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