Mar*_*ius 2 java static-analysis pmd suppress-warnings static-code-analysis
我有ViewStatePOJO 类,它们的构造函数带有许多参数。问题是 PMDExcessiveParameterList对他们施加了违规行为。
现在我试图抑制所有以ViewState.java(例如 in 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>
Run Code Online (Sandbox Code Playgroud)
问题是,这将压制所有针对ExcessiveParameterList哪个阶级的违规行为。我究竟做错了什么?
这是这个问题的重复,但由于没有人赞成我的答案,所以我不能将其标记为重复。
有关表达式为何抑制所有违反规则的详细信息,请参阅/sf/answers/3952222921/ 。
这里的解决方案是测试@ImageClassOrInterfaceDeclaration 的属性,而不是使用//,而是使用ancestor检查:
./ancestor::ClassOrInterfaceDeclaration[contains(@Image, 'ViewState')]
Run Code Online (Sandbox Code Playgroud)
XPath 1.0 不支持正则表达式,因此您只能contains像这里一样进行检查,或者使用 模仿ends-with函数substring,如本答案中所述
| 归档时间: |
|
| 查看次数: |
2239 次 |
| 最近记录: |