如何告诉 PMD 忽略未使用代码的 @PostConstruct 方法

How to tell PMD to ignore @PostConstruct Methods for unused Code


我们有一个项目被 PMD 检查是否违反了例如未使用的私有方法。我们的问题是我们不知道是否可以忽略用 @PostConstruct.

注释的私有方法

规则定义如下:

<rule ref="rulesets/java/unusedcode.xml/UnusedPrivateMethod"/>

编辑:

我的目标是定义一次以忽略带注释的方法。我想防止在每个方法上写 @SupressWarnings

在 HairyFotr 的提示和建议下,我能够配置我的规则集以忽略 private 方法和 @PostConstruct

我必须使用的规则是:

<rule ref="rulesets/java/unusedcode.xml/UnusedPrivateMethod">
    <properties> 
        <property name="violationSuppressXPath" 
            value="//ClassOrInterfaceBodyDeclaration/Annotation/MarkerAnnotation/Name[@Image='PostConstruct']" />
    </properties>
</rule>   
只要存在至少一个 @PostConstruct 注释,

就会抑制文件中所有 UnusedPrivateMethod 违规行为。如果您只想抑制来自带有@PostConstruct 注释的方法的违规并保留来自没有注释的方法的违规,那么您必须在 XPath 前面加上 ancestor:: 而不是 //

注意:以下示例使用PMD 6.0.0的新规则参考。

  <rule ref="category/java/bestpractices.xml/UnusedPrivateMethod">
    <properties>
      <property name="violationSuppressXPath"
                value="ancestor::ClassOrInterfaceBodyDeclaration/Annotation/MarkerAnnotation/Name[@Image='PostConstruct']" />
    </properties>
  </rule>