在 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