我的要求是解析 java 文件并找到实现特定接口的类或接口。因此,我开始在 PMD 中实现自定义规则。我能够编写一个 XPath 表达式来搜索类和接口,但无法找出将要进行搜索的接口名称传递给 XPath 规则的正确方法。一种方法是在调用 PMD 之前定义一个属性并更新 xml 文件。
<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 问题,即在运行时将值传递给规则?