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

时间:2016-01-20 15:04:31

标签: java ejb cdi pmd

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

规则定义如下:

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

编辑:

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

2 个答案:

答案 0 :(得分:7)

通过HairyFotr的提示和建议,我能够将我的规则集配置为忽略private方法@PostConstruct

我必须使用的规则是:

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

答案 1 :(得分:0)

只要存在至少一个@PostConstruct注释,

moz987's answer就会禁止文件中的所有UnusedPrivateMethod违规。如果您只想抑制来自带有@PostConstruct注释的方法的违规并保留没有注释的方法的违规,那么您必须使用ancestor::而不是//添加XPath。

注意:下面的示例使用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>