【问题标题】:How can getters/setters be ignored in the PMD CommentRequired rule?如何在 PMD CommentRequired 规则中忽略 getter/setter?
【发布时间】:2015-06-17 14:48:44
【问题描述】:

我想使用 PMDs 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 需要注释。

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

【问题讨论】:

    标签: java xpath pmd


    【解决方案1】:

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

    <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

    【讨论】:

    • 我尝试在 xpath 表达式上方添加 xpath,但这也忽略了 foo() 方法的静态分析,考虑到它们是 setBoo()getBob()method。而它应该只静默扫描 setter 和 getter!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-02
    • 1970-01-01
    • 2013-01-26
    相关资源
    最近更新 更多