java - 如何在 PMD CommentRequired 规则中忽略 getter/setter?

标签 java xpath pmd

我想使用 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/

相关文章:

python - 除了一页上的一个 CSS 列表外,不抓取所有请求的数据

java - 项目之间的 CPD/PMD?

java - 有没有被 if - PMD Violation 包围的日志 block

java - 使用 eclipse 无法在 java 中解决 PMD 错误

java - Liferay : [SecurityPortletContainerWrapper:630] Reject process action

java - 耳朵展开两次。 Maven、Jboss AS 7

java - 当Guava CacheLoader无法加载数据时应该抛出什么异常?

java - 虚拟网络服务

ruby - XPath 只选择子元素(不是空白文本节点)

selenium - 如何在Robot Framework中基于元素的文本编写xpath?