簡體   English   中英

如何在Eclipse中使用PMD Ant從文件夾運行所有規則集?

[英]How to run all rulesets from a folder using PMD Ant in Eclipse?

我試圖運行PMDAntEclipse ,當我生成項目。

這是我的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>

它適用於basic.xml ,但我想運行java文件夾中的所有規則集(它有大約20個規則集)所以我嘗試過:

<pmd rulesetfiles="C:\Users\Nikolay\ProjectName\lib\rulesets\java\*.xml">
<pmd rulesetfiles="C:\Users\Nikolay\ProjectName\lib\rulesets\java\*">

但是當我試圖跑步時,他們都失敗了。 有沒有辦法指定文件夾,而不是手動指定文件列表的單個文件?

為了讓未來的讀者在Eclipse下配置Ant PMD:

  • 從官方網站下載pmd-bin.zip
  • 解壓縮pmd.jarjaxen.jarasm.jar
  • 將上面的jar添加到Window - Preferences - Ant - Runtime - Ant Home Entries - 添加外部JAR
  • 解壓縮rulesets文件夾
  • 來自<pmd rulesetfiles=...>的規則集的引用位置

(擴大來自coolfan的答案,用於螞蟻任務)

PMD規則集文件的文檔說它是逗號分隔的文件列表。

rulesetfiles以逗號分隔的規則集文件列表('rulesets / basic.xml,rulesets / design.xml')。 如果您編寫自己的規則集文件,則可以將它們放在類路徑中並將其插入此處。 是的,除非使用規則集嵌套元素

Ant提供了一種將文件集轉換為這種格式的方法。 任務是pathconvert

這是網站上的一個例子

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

 <pathconvert pathsep="," property="javafiles" refid="src.files"/>

正如文件所暗示的那樣,也許param不支持通配符。

快速查看其源代碼也支持我的猜測,請參閱RuleSetReferenceId.java ,第194行。

因此,它需要包含一個“清單”使用屬性,作為分隔符,如:

"rule1,rule2,rule3,path-to-rule-file4"

解決方法可能是掃描目錄,列出所有rule-xml文件,並以逗號分隔格式構建屬性,然后將其傳遞給<pmd>任務。

不幸的是,我不知道任何可以做到這一點的螞蟻任務。 所以你可能要編寫一些代碼。

我可以提出兩種方法:

  1. 寫一個螞蟻任務; 對於Java來說, 有很多問答,就像這樣
  2. <groovy>任務中寫groovy; 還有很多問答

編輯:

Jayan建議<pathconvert>任務,這應該是正確的答案。

在pmd庫jar中有一個all-java.xml,其中包含了所有規則集。 嘗試使用以下內容:

<pmd rulesetfiles="rulesets/internal/all-java.xml">

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM