如何在PMD CommentRequired规则中忽略getter / setter?

时间:2015-06-16 13:48:37

标签: java xpath pmd

我想使用PMD CommentRequired规则,但不希望它应用于java bean getter / setter。

基于this answer我尝试了以下配置:

<rule ref="rulesets/java/comments.xml/CommentRequired">
    <properties>
        <property name="violationSuppressXPath" value="./ancestor::MethodDeclaration/MethodDeclarator/NodeToken[@tokenImage='(get|is|set).*']"/>
        <property name="fieldCommentRequirement" value="Ignored"/>
    </properties>
</rule>

然而,PMD仍然报告我的代码中的一些getter需要评论。

什么是正确的XPath表达式来抑制getter / setter的规则以及基于PMD XPath表达式的模式?

1 个答案:

答案 0 :(得分:2)

阅读PMD XPath rule tutorial并使用PMD Designer后,以下内容对我有用:

<rule ref="rulesets/java/comments.xml/CommentRequired">
    <properties>
        <property name="violationSuppressXPath" value="//ClassOrInterfaceBodyDeclaration/MethodDeclaration/MethodDeclarator[matches(@Image,'(get|is|set)[\p{Lu}].*') and not(FormalParameters/FormalParameter)]"/>
        <property name="fieldCommentRequirement" value="Ignored"/>
    </properties>
</rule>

为了更好地掌握PMD正在使用的AST,可以查看它的javadoc:http://pmd.sourceforge.net/pmd-5.1.0/apidocs/net/sourceforge/pmd/lang/java/ast/package-summary.html

相关问题