有没有办法按类名模式从PMD规则中排除类?
我正在寻找某事:
<rule ref="rulesets/java/coupling.xml/ExcessiveImports">
<exclude-pattern>.*Test\.class</exclude-pattern>
</rule>
我知道vioSuppressXPath方法,但我发现它太丑陋/复杂。
谢谢!
答案 0 :(得分:2)
我担心没有。您目前可以完全忽略使用<exclude-pattern>
进行分析的文件,但不能用于特定规则。
这背后的基本原理是,在代码库上强制执行规则集时,应尽量保持一致。在这样做时,很少考虑例外:
您的示例似乎指向了第一个场景的方向。如果您想为测试类提供更轻松的规则集,则应创建单独的配置并让PMD运行两个单独的分析。
然而,这不属于PMD本身的范围,而是关于如何运行它。在Gradle / Ant / CLI上,这非常简单。不幸的是,Maven目前不受支持(可以找到一个功能请求并投票here)
如果您认为有另一种情况(前两种情况未涵盖),则应考虑这一情况,请在https://github.com/pmd/pmd/issues上发布功能请求
答案 1 :(得分:2)
如果类名以DTO
结尾,则以下规则会忽略特定规则:
<rule ref="category/java/bestpractices.xml/UnusedPrivateField">
<properties>
<!--Ignore UnusedPrivateField on classes where the class name ends with DTO-->
<property name="violationSuppressXPath" value="//ClassOrInterfaceDeclaration['.*DTO']"/>
</properties>
</rule>