繁体   English   中英

PMD找不到规则集

[英]PMD coulnd't find ruleset

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

<role ref="rulesets/emptycode" />

<role ref="rulesets/unnecessary" />

在其他所有情况下,这种定义都有效。 我发现的是:在ecmasrcipt类别下有一个名为“ 不必要 ”的规则集,所以这个定义可能需要一些使用java版本的建议。 我试过多次思考,比如规则集 xml节点的set 语言属性(“JAVA”,基于PMD JavaDoc),以及ref中的一些pre-postfix,但它不起作用,我发现没有可用的解决方案。 有人有想法,我忘记了什么,或者我失败了什么? 谢谢你的帮助!

PMD似乎是Maven使用的一个可爱的野兽。 我刚刚用插件的3.0版来解决这个问题 - 有两个解决方案:

  • 快速而肮脏的解决方案 :在项目中放置规则集:

    • 下载PMD jar( http://sourceforge.net/projects/pmd/files/latest/download
    • 解压缩lib/pmd-xxxjar
    • 从该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-xxxjar引用规则集。

    • 创建自定义规则集,例如: ${basedir}/pmd/custom.xml (请参阅http://pmd.sourceforge.net/pmd-5.0.2/howtomakearuleset.html
    • 以下列方式引用PMD规则集: <rule ref="rulesets/java/imports.xml"/>
    • 注意:路径是pmd-xxxjar内的路径(参见上面的快速和脏) ,没有前导斜杠
    • 引用您的自定义规则集,如下所示:

       <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 <linkXref>false</linkXref> )并调整路径,直到我停止收到错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM