gpt4 book ai didi

java - 抑制某些类别中的 PMD 违规

转载 作者:行者123 更新时间:2023-11-29 04:08:45 28 4
gpt4 key购买 nike

我有 ViewState POJO 类,它们的构造函数带有许多参数。问题是 PMD 对它们抛出 ExcessiveParameterList 违规。

现在,我试图抑制所有以 ViewState.java 结尾的类(例如在 DashboardViewState.java 中)的这种违规行为。我已经添加这是我的 rules-pmd.xml:

<rule ref="category/java/design.xml/ExcessiveParameterList">
<properties>
<!--Ignore ExcessiveParameterList on ViewState classes -->
<property name="violationSuppressXPath" value="//ClassOrInterfaceDeclaration['*ViewState.java']"/>
</properties>
</rule>

问题是,这将抑制所有针对 ExcessiveParameterList 的违规行为,无论在哪个类中。我做错了什么?

最佳答案

这是 this question 的重复项,尽管由于没有人赞成我的答案,所以我不能将其标记为重复。

参见https://stackoverflow.com/a/56460327/6245827详细了解为什么您的表达会抑制所有违反规则的行为。

这里的解决方案是测试 ClassOrInterfaceDeclaration 的 @Image 属性,并且使用 //,而是使用 祖先检查:

./ancestor::ClassOrInterfaceDeclaration[contains(@Image, 'ViewState')]

XPath 1.0 不支持正则表达式,因此您只能像这里一样执行 contains 检查,或者使用 substring 模仿 ends-with 函数,如 this answer 中所述

关于java - 抑制某些类别中的 PMD 违规,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56492868/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com