如何在Eclipse中使用PMD Ant从文件夹运行所有规则集?

Nik*_*sov 5 java eclipse ant pmd

我试图运行PMD来自AntEclipse当我生成项目.

这是我的build.xml文件:

<taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask"/>

<target name="check_pmd">
    <pmd rulesetfiles="C:\Users\Nikolay\ProjectName\lib\rulesets\java\basic.xml">
        <formatter type="html" toFile="pmd_report.html" toConsole="true"/>
        <fileset dir="C:\Users\Nikolay\ProjectName\src">
            <include name="**/*.java"/>
        </fileset>
    </pmd>
</target>
Run Code Online (Sandbox Code Playgroud)

它运行良好basic.xml,但我想运行java文件夹中的所有规则集(它有大约20个规则集)所以我尝试过:

<pmd rulesetfiles="C:\Users\Nikolay\ProjectName\lib\rulesets\java\*.xml">
<pmd rulesetfiles="C:\Users\Nikolay\ProjectName\lib\rulesets\java\*">
Run Code Online (Sandbox Code Playgroud)

但是当我试图跑步时,他们都失败了.有没有办法指定文件夹,而不是手动指定文件列表的单个文件?

为了让未来的读者在Eclipse下配置Ant PMD:

  • pmd-bin.zip从官方网站下载
  • 打开包装pmd.jar,jaxen.jar然后asm.jar
  • 将上面的jar添加到Window - Preferences - Ant - Runtime - Ant Home Entries - 添加外部JAR
  • 解压rulesets文件夹
  • 规则集的引用位置 <pmd rulesetfiles=...>

Jay*_*yan 4

(扩展coolfan对ant任务的答案)

PMD 规则集文件的文档说它是逗号分隔的文件列表。

规则集文件 以逗号分隔的规则集文件列表('rulesets/basic.xml,rulesets/design.xml')。如果您编写自己的规则集文件,则可以将它们放在类路径中并将它们插入此处。是,除非使用规则集嵌套元素

Ant 提供了一种将文件集转换为这种格式的方法。任务是路径转换

这是网站上的示例

<fileset dir="${src.dir}" id="src.files">
      <include name="**/*.java"/>
 </fileset>

 <pathconvert pathsep="," property="javafiles" refid="src.files"/>
Run Code Online (Sandbox Code Playgroud)