我正在将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")
        }
    }
}

10-05 18:31