【问题标题】:Running Maven PMD locally using Sonar ruleset使用 Sonar 规则集在本地运行 Maven PMD
【发布时间】:2015-02-17 16:23:21
【问题描述】:

我正在尝试使用 Maven 在本地运行 pmd。在我运行的项目中

mvn jxr:jxr pmd:pmd

但收到错误:

net.sourceforge.pmd.RuleSetNotFoundException: Can't find resource 'rulesets/basic.xml' for rule 'UnusedNullCheckInEquals'.  Make sure the resource is a valid file or URL and is on the CLASSPATH

这是导出的规则文件的 sn-p :

<?xml version="1.0" encoding="UTF-8"?>
<ruleset>
  <rule ref="rulesets/basic.xml/UnusedNullCheckInEquals">
    <priority>3</priority>
  </rule>
</ruleset>

我已更新 pom 文件以引用自定义规则集:

          <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-pmd-plugin</artifactId>
        <version>3.2</version>
        <configuration>
            <linkXref>true</linkXref>
            <rulesets>
                <ruleset>c:\\pmd\\export.xml</ruleset>
            </rulesets>

        </configuration>
    </plugin>

要导出规则集以便可以使用 Maven 在本地运行 pmd,是否需要导出此文件 (basic.xml) 和所有其他共同构成“Sonar Way”质量配置文件的 xml 文件?如果是这样,可以在 Sonar 上的何处访问这些文件?

【问题讨论】:

    标签: java maven maven-2 sonarqube pmd


    【解决方案1】:

    您可以通过“质量配置文件 > 声纳方式 > 永久链接 > PMD”访问,不过,我认为“声纳方式”pmd 规则默认为空(所有规则均已禁用)。

    另外,请记住,maven-pmd-plugin 的 3.2 版不是在 rulesets 中而是在 rulesets/java 中查找规则,因此您可能必须替换导出文件中的该路径(至少是您使用的文件)声纳 4.2)。

    最后,我建议不要使用硬编码路径来引用规则集文件,使用类似:

    <ruleset>${project.basedir}/rules/pmd-rules.xml</ruleset>
    

    希望这会有所帮助!

    【讨论】:

    • 谢谢,“质量配置文件 > 声纳方式 > 固定链接 > PMD”中的规则文件引用了其他文件,例如 但我不确定在哪里可以找到这些文件。您似乎暗示这些引用的文件是自定义添加的,不是默认声纳设置的一部分?
    • 请参阅maven-pmd-plugin:Using Rule Sets“这些规则集捆绑在 PMD 代码分析工具中”和“从 PMD 5.0 开始和Maven PMD 插件 3.0 的 Java 语言捆绑规则集的路径已更改从 /rulesets/xyz.xml 到 /rulesets/java/xyz.xml"
    猜你喜欢
    • 2011-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-14
    • 2018-02-06
    • 2012-02-27
    • 2011-08-09
    • 1970-01-01
    相关资源
    最近更新 更多