我想使用 PMD CommentRequired规则,但不希望将其应用于 java bean getters/setters。
基于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 需要注释。
抑制 getter/setter 规则的正确 XPath 表达式是什么?PMD XPath 表达式基于哪个架构?
最佳答案
阅读 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
关于java - 如何在 PMD CommentRequired 规则中忽略 getter/setter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30869538/