[英]How to run all rulesets from a folder using PMD Ant in Eclipse?
我試圖運行PMD
從Ant
在Eclipse
,當我生成項目。
這是我的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.jar
, jaxen.jar
和asm.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>
任務。
不幸的是,我不知道任何可以做到這一點的螞蟻任務。 所以你可能要編寫一些代碼。
我可以提出兩種方法:
編輯:
Jayan建議<pathconvert>
任務,這應該是正確的答案。
在pmd庫jar中有一個all-java.xml,其中包含了所有規則集。 嘗試使用以下內容:
<pmd rulesetfiles="rulesets/internal/all-java.xml">
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.