在 PMD CommentRequired 规则中如何忽略 getters/setters?
How can getters/setters be ignored in the PMD CommentRequired rule?
我想使用 PMD CommentRequired 规则,但不希望它应用于 java bean getters/setters。
基于我尝试了以下配置:
<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 需要注释。
抑制 getters/setters 规则的正确 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
我想使用 PMD CommentRequired 规则,但不希望它应用于 java bean getters/setters。
基于
<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 需要注释。
抑制 getters/setters 规则的正确 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