You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PMD 7.22.0中排除指定包及子包下的类的TooManyFields规则检查

如何在PMD 7.22.0中排除指定包及子包下的类的TooManyFields规则检查

我之前在使用PMD 7.22.0时,遇到了需要让TooManyFields规则跳过指定包(比如dto包)及其所有子包下类的需求,试了网上的一个方案却没生效,后来终于找到了解决办法,在这里分享给大家:

之前的无效尝试

我一开始用了这样的配置,但完全起不到排除的效果:

<rule ref="category/java/design.xml/TooManyFields">
    <properties>
        <property name="violationSuppressXPath"
                  value="//ClassOrInterfaceDeclaration['.*/dto/.*']"/>
    </properties>
</rule>

可行的解决方案

后来参考了相关思路调整了XPath表达式,下面的配置成功实现了需求——不仅能排除dto包,还能同时处理entities包(你可以根据自己的实际需要修改括号内的包名列表):

<rule ref="category/java/design.xml/TooManyFields">
    <properties>
        <property name="violationSuppressXPath"
                  value="//ClassDeclaration[matches(@BinaryName, '\.(dto|entities)\.')]"/>
    </properties>
</rule>

配置说明

这个配置的核心是利用matches(@BinaryName, '\.(dto|entities)\.')匹配类的完整二进制名称(即带完整包路径的类名):

  • 只要类的包路径中包含.dto.或.entities.的片段,就会被TooManyFields规则忽略
  • 该表达式会自动覆盖对应包的所有子包,无需额外配置子包路径

备注:内容来源于stack exchange,提问作者wuttke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 18:13:02