我正在使用Gradle 4.5.1和标准的Gradle插件。我特别要求我的构建使用PMD 6.1.0,如下所示:
apply plugin: "pmd"
pmd {
toolVersion = "6.1.0"
}
pmdMain {
rulSets = ["java-basic"]
}
一切都过去了,但我在控制台中得到了一些弃用警告:
使用规则名称
category/java/errorprone.xml/AvoidBranchingStatementAsLastInLoop
代替已弃用的规则名称rulesets/java/basic.xml/AvoidBranchingStatementAsLastInLoop
。 PMD 7.0.0将删除对此不推荐使用的规则名称使用的支持。
我最初的想法是像这样更改pmdMain
块:
pmdMain {
rulSets = ["java-errorprone"]
}
然而,我收到此错误:
无法找到资源' null'对于规则' java-errorprone'。确保资源是有效的文件或URL,并且位于CLASSPATH上。这是当前的类路径:
~\.gradle\wrapper\dists\gradle-4.5.1-bin\a5vbgfvpwtoqz8v2cdivxz28k\gradle-4.5.1\lib\gradle-launcher-4.5.1.jar
我做错了吗? Gradle的PMD插件是否与PMD 6.x不兼容?
答案 0 :(得分:5)
在PMD 6.0.0中,旧的规则集已弃用。这些规则被重新组织成类别,并且人们更加努力为他们的项目创建量身定制的规则集。
也就是说,最佳做法是让write a custom ruleset文件从Java Rule Catalog
中选择要包含哪些规则话虽如此,即使不可取,您仍然可以包含完整的类别。在Gradle下,可以通过以下方式完成:
pmdMain {
rulSets = ["category/java/errorprone.xml"]
}
请注意,即使已弃用,旧规则集也将继续有效,直到PMD 7.0.0发布。我们计划提供migration tools for existing ruleset files以及更简单的规则集生成器,以简化过渡。