我正在将Java项目的构建过程从Ant迁移到Gradle
为了防止在违反pmd的情况下使ant构建失败,我们使用了 thresholdFile ,它具有一个预先定义的违规限制。
同样,maven提供了 failOnViolation 和 maxAllowedViolations 属性来实现相同的目的。 Maven Docs
我指的是Pmd Docs。但是在相似的行上找不到任何东西。
是否有等效的方法来在Gradle中实现相同的PMD行为
最佳答案
最后,我通过定义如下所述的自定义任务来实现了这一目标。
在此,基于pmd违规报告,我能够计算出当前迭代中发现的违规
task checkPMDReport {
doLast {
def pmdReport = rootProject.file('reports/pmd/main.xml')
def rootNode = new XmlSlurper().parse("$pmdReport")
def bugsFound = rootNode.children().children().findAll({node -> node.name() == 'violation'}).size()
if (bugsFound > "$BUG_THRESHOLD") {
throw new GradleException("$bugsFound PMD rule violations were found. See the report at: $pmdReport")
}
}
}