如何在 Gradle > 2.0 中查找 PMD 规则集名称

Posted

技术标签:

【中文标题】如何在 Gradle > 2.0 中查找 PMD 规则集名称【英文标题】:How to find PMD Rulesets names in Gradle >2.0 【发布时间】:2014-08-30 16:24:48 【问题描述】:

在 Gradle 的 Java 项目中,我们可以通过 pmd 插件使用 PMD。要配置我们要使用的规则,可以通过两种方式进行:

ruleSetFiles - 要使用的自定义规则集文件。有关如何编写规则集文件的信息,请参阅官方文档。示例:ruleSetFiles = files("config/pmd/myRuleSet.xml") ruleSets要使用的内置规则集。请参阅内置规则集的官方列表。

使用 ruleSetFiles 没有问题,您可以找到规则的名称并添加或排除规则,但是在文档中没有关于 ruleStes 的信息?从哪里可以找到确切的名称?从我从另一个项目中发现的名称类似于 PMD 文档中的名称,但小写。例如:

Braces - > java-braces
Clone - > java-clone
Implementation - >java-implementation
Code Size - > java-codesize

但是像 Security Code Guidelines 一样,不会在 -> java-securitycodeguidelines 中转换,而只是在 java-sunsecure 中转换。我发现适用于 PMD 5.1.1 的名称。是:

pmd 
      ruleSets = [
        'java-android',
        'java-basic',
        'java-braces',
        'java-clone',
        'java-codesize',
        'java-comments',
        'java-controversial',
        'java-coupling',
        'java-design',
        'java-empty',
        'java-finalizers',
        'java-imports',
        'java-j2ee',
        'java-javabeans',
        'java-junit',
        'java-logging-jakarta-commons',
        'java-logging-java',
        'java-migrating',
        'java-naming',
        'java-optimizations',
        'java-strictexception',
        'java-strings',
        'java-sunsecure',
        'java-typeresolution',
        'java-unnecessary',
        'java-unusedcode'           
        ]
    toolVersion = '5.1.1'
    ignoreFailures = true

如何找到文档中显示的 PMD 名称与 Gradle 名称之间的映射?

【问题讨论】:

没有映射。这些是官方 PMD 规则集名称。 所以你能给我一个链接,从哪里可以找到它们,因为从文档pmd.sourceforge.net/pmd-5.1.2/rules/index.html 中的给定链接我找不到它们。 我不知道是否记录了这些名称以及记录在何处。最好问问 PMD 的人。 我查看了他们的测试并找到了更多规则名称,但如果列表完整,PMD 人必须给出他们的最后意见。 【参考方案1】:

The docs for RuleSetReferenceId 很有帮助,就像我相信源代码树中的 directory 一样。基本上把 java- 放在这些文件的前面,就可以开启那里的规则了。

【讨论】:

以上是关于如何在 Gradle > 2.0 中查找 PMD 规则集名称的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Gradle 中查找/删除未使用的依赖项

如何使用 xslt 2.0 根据我的特定标准计算所有 <w:p> 节点?

查找在gradle中运行编译器的JDK的位置

如何按 .NET 2.0 中的特定属性对列表进行排序? [复制]

启用Gradle远程调试

如何在jquery中查找特定父级下的类名