gpt4 book ai didi

java - PMD 找不到规则集

转载 作者:行者123 更新时间:2023-12-01 14:08:47 25 4
gpt4 key购买 nike

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

<role ref="rulesets/emptycode" />

<role ref="rulesets/unnecessary" />

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

最佳答案

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

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

    • 下载 PMD jar (http://sourceforge.net/projects/pmd/files/latest/download)
    • 提取 lib/pmd-x.x.x.jar
    • 从该 PMD jar 文件中提取 rulesets/<type>/<ruleset>.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 规则集:<rule ref="rulesets/java/imports.xml"/>
    • 注意:路径是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(<linkXref>false</linkXref> 中的 pom.xml)并调整路径,直到不再出现错误。

关于java - PMD 找不到规则集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13385191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com