PMD 找不到规则集

Posted

技术标签:

【中文标题】PMD 找不到规则集【英文标题】:PMD coulnd't find ruleset 【发布时间】:2012-11-03 07:48:02 【问题描述】:

我正在创建一个基于 maven 的 java 项目,其中包含 PMD maven 插件。我使用我自己的规则集 XML,它就像一个魅力,除了两个规则集:emptycodeunnecessary:当我运行构建时,maven 说:“找不到资源”。角色定义如下所示:

<role ref="rulesets/emptycode" />

<role ref="rulesets/unnecessary" />

在所有其他情况下,这种定义都有效。我发现:在 ecmasrcipt 类别下有一个名为“unnecessary”的规则集,所以这个定义可能需要一些建议才能使用 java 版本。我尝试了多种想法,例如将 language 属性设置为 ruleset xml 节点(“JAVA”,基于 PMD JavaDoc),以及 ref,但它不起作用,我在网上找不到有效的解决方案。有人有什么想法,我忘了设置什么,或者我失败了什么?感谢您的帮助!

【问题讨论】:

【参考方案1】:

PMD 似乎是 Maven 中使用的一个小动物。我刚刚用 3.0 版插件解决了这个问题 - 有两种解决方案:

快速而简单的解决方案:将规则集放入您的项目中:

下载 PMD jar (http://sourceforge.net/projects/pmd/files/latest/download) 提取lib/pmd-x.x.x.jar 从该 PMD jar 文件中提取您要使用的 rulesets/&lt;type&gt;/&lt;ruleset&gt;.xml 文件 将它们放在项目下的文件夹中 - 类似于 $basedir/pmd/...

如下引用它们:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-pmd-plugin</artifactId>
    <configuration>
        <rulesets>
            <ruleset>$basedir/pmd/<ruleset>.xml</ruleset>
        </rulesets>
    </configuration>
</plugin>

优点是这很容易,缺点是如果您以后更新 PMD 版本,您需要记住更新这些文件。

不错的解决方案:参考pmd-x.x.x.jar 中的规则集。

创建自定义规则集,例如:$basedir/pmd/custom.xml(参见http://pmd.sourceforge.net/pmd-5.0.2/howtomakearuleset.html) 按以下方式引用 PMD 规则集:&lt;rule ref="rulesets/java/imports.xml"/&gt; 注意: 路径是 pmd-x.x.x.jar 内部的路径(参见上面的快速说明)没有前导斜杠

如下引用您的自定义规则集:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-pmd-plugin</artifactId>
    <configuration>
        <rulesets>
            <ruleset>$basedir/pmd/custom.xml</ruleset>
        </rulesets>
    </configuration>
</plugin>

优点是它总是会从 PMD jar 中引用当前的 PMD 规则集,缺点是它有点麻烦。

为了试验它直到它可以工作(maven-pmd-plugin 3.0 版),我一直运行 mvn pmd:pmd(pom.xml 中的&lt;linkXref&gt;false&lt;/linkXref&gt;)并调整路径,直到不再出现错误。

【讨论】:

他们是否改变了部署方式?从 5.7.0 开始,我没有看到 pmd-x-x-x.jar。

以上是关于PMD 找不到规则集的主要内容,如果未能解决你的问题,请参考以下文章

PMD 和 FindBugs 有啥区别?

FxCop 自定义规则文档。为啥找不到我的网址?

在 R 中使用 Apriori 算法找不到规则

找不到引用的类/找不到引用的方法

Xcode 警告:“没有规则来处理文件”和“找不到目录”

VuetifyLoaderPlugin 错误找不到 vue-loader 的匹配规则