2011-01-13 107 views
4

已經有許多questions about creating new rules,並創建規則集。這些也是官方文件涵蓋的(或者我應該說的)主題。

但是如果我想改編現有的規則呢?例如。我想修改「靜態最終成員應該全部大寫」的規則來忽略記錄器。我知道這個決定是controversial,但我們已經達成了團隊的共識

我是否必須下載並調整源代碼發佈?我希望有更好的辦法。

更好的方法還可能涉及使用不同的代碼審查框架與易餡餅自定義,雖然我不希望在中游改變馬匹。如何修改現有的PMD規則

回答

2

到目前爲止,您無疑已經離開了這個道路,但爲未來看到這個問題的人提供了答案。

您可以通過創建自己的Java規則來擴展Java規則,該規則將PMD中的內置子類化。然後創建自己的規則集XML,該XML指向您的Java規則。

不幸的是,VariableNamingConventions規則在沒有擴展點的私有方法中具有所有邏輯。你可能會更好地創建自己的包裝他們的規則。這樣你可以檢查你的特殊情況,然後委託給其餘的現有規則。

+0

謝謝,珍妮。我最終擴展了VariableNamingConventions幷包裝了ASTFieldDeclaration的訪問方法。儘管如此,擴展AbstractJavaRule可能會更好。 – kostja 2011-02-28 08:31:05

1

您可以使用XPath在規則集文件中創建規則的副本。 XPath的聲明性質也需要使用一些,但它可以縮短複雜規則的工作量。

http://techtraits.com/programming/2011/11/01/writting-pretty-code-with-pmd.html

http://blog.code-cop.org/search/label/PMD

+0

博客條目似乎解釋瞭如何使用XPath添加新的PMD規則和規則集,而我的意圖是修改現有規則以按名稱排除某些變量。這是一個誤解嗎? – kostja 2011-11-22 18:28:03

0

在Eclipse中去 Windows -> Prefernces -> PMD -> Rule Configration

檢查"Use Global..."

滾動並找到VariableNamingConvention, w/ ruleset Naming

點擊"Rule Designer"按鈕

單擊排除選項卡

添加VariableDeclaratorId[@Image='logger']與XPath表達式排除

單擊確定,然後重新運行PMD校驗碼


變化logger長期上面無論您的變量名。