使用Sonar规则集在本地运行Maven PMD

时间:2015-02-17 16:23:22

标签: java maven maven-2 sonarqube pmd

我尝试使用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

以下是导出的规则文件的片段:

<?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)&amp;所有其他xml文件,它们共同组成&#34; Sonar Way&#34;品质简介?如果是这样,可以在Sonar上访问这些文件吗?

1 个答案:

答案 0 :(得分:0)

您可以访问&#34;质量配置文件&gt;声纳方式&gt;永久链接&gt; PMD&#34;虽然,我认为&#34; Sonar Way&#34;默认情况下,pmd规则为空(禁用所有规则)。

另外,请注意maven-pmd-plugin版本3.2查找不在rulesets但在rulesets/java中的规则,因此您可能必须在导出的文件中替换该路径(至少使用Sonar 4.2获得的文件。

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

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

希望这有帮助!