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

标签 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) 以及共同构成“Sonar Way”质量配置文件的所有其他 xml 文件?如果是这样,在 Sonar 上哪里可以访问这些文件?

最佳答案

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

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

最后,我建议不要使用硬编码路径来引用规则集文件,请使用如下内容:

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

希望这有帮助!

关于java - 使用 Sonar 规则集在本地运行 Maven PMD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28566085/

相关文章:

java - 如何在 Java 中迭代特定类型的对象 ArrayList

JAVA:创建 boolean 变量或在 If 语句中放置参数?

Java 9 迁移 javax.annotation

java - 如何通过 Gradle 将 ojdbc7 添加到 Java Web 应用程序?

maven-2 - 清理旧缓存组件的 Nexus 存储库

java - UCanAccess SQL 插入失败;查询在 MS Access 意外 token (UcanaccessStatement.java :222)

maven - 标签parent、dependency和plugin之间有什么区别(Maven)

java - 如何自动配置 Eclipse?

exception - quartz 的 slf4j 异常

java - Intent 问题 java.lang.RuntimeException : Unable to start activity