簡體   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