我想使用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表达式的模式?
答案 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