2
我的需求是解析java文件並查找實現特定接口的類或接口。因此我開始在PMD中實現自定義規則。我能夠編寫一個XPath表達式來搜索接口類&,但無法找出正確的方式將要進行搜索的接口名稱傳遞給XPath規則。一種方法是在調用PMD之前定義屬性並更新xml文件。使用PMD的自定義規則 - 在運行時將值傳遞給規則
<rule name="Implement or extend an interface"
message="Implement or extend an interface"
class="net.sourceforge.pmd.rules.XPathRule">
<description>
This rule will help us to find out all the classes/interface which implement a particular interface
</description>
<properties>
<property name="xpath">
<value>
<![CDATA[
//ImplementsList/ClassOrInterfaceType[@Image=$interfaceName] |
//ExtendsList/ClassOrInterfaceType[@Image=$interfaceName]
]]>
</value>
</property>
<property name="interfaceName">
<value>Should be set at run time</value>
</property>
</properties>
<example>
到上述方法的問題是,PMD不能在線程中調用,因爲XML將被共享。
有沒有人遇到過這樣的PMD問題,其中值要在運行時傳遞給規則?
我找到了解決辦法!雖然不使用PMD。 Checkstyle是另一種靜態分析工具,它允許定義自定義規則並將運行時值傳遞給這些規則。 – Amit 2010-08-02 05:22:57