내 요구 사항은 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>
위의 접근 방식의 문제는 XML을 공유 할 것이기 때문에 PMD 스레드에서 호출 할 수 없다는 것입니다.
런타임에 값이 규칙에 전달되는 PMD와 관련하여 이러한 문제에 직면 한 사람이 있습니까?
해결책을 찾았습니다. PMD를 사용하지는 않지만. Checkstyle은 사용자 정의 규칙을 정의하고이 규칙에 런타임 값을 전달할 수있는 또 다른 정적 분석 도구입니다. – Amit