gpt4 book ai didi

java - 使用 PMD 的自定义规则 - 在运行时将值传递给规则

转载 作者:行者123 更新时间:2023-11-30 11:58:07 28 4
gpt4 key购买 nike

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

最佳答案

如果您希望能够在 XPath 规则中使用不同的值,则需要拥有该规则的多个副本 - 每个值一个。使用 PMD 的替代方法是使用 Java 规则。它甚至可以调用 XPath。不同之处在于 Java 是运行时的,因此可以稍后获取值或循环访问一组值。

关于java - 使用 PMD 的自定义规则 - 在运行时将值传递给规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3378304/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com