【问题标题】:How to tell PMD to ignore @PostConstruct Methods for unused Code如何告诉 PMD 忽略未使用代码的 @PostConstruct 方法
【发布时间】:2016-04-26 12:06:56
【问题描述】:


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

规则定义如下:

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

编辑:

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

【问题讨论】:

    标签: java ejb cdi pmd


    【解决方案1】:

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

    我必须使用的规则是:

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

    【讨论】:

    • 我认为该值需要以双斜杠(“//”)而不是双冒号(“::”)开头。
    【解决方案2】:

    moz987's answer 会在至少存在一个 @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>
    

    【讨论】:

      猜你喜欢
      • 2014-03-11
      • 2011-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多