【问题标题】:How to tune PMD TooManyFields rules to ignore injected services如何调整 PMD TooManyFields 规则以忽略注入的服务
【发布时间】:2016-05-27 08:44:44
【问题描述】:

我想调整TooManyFields PMD 规则,这样它就不会将我注入的服务算作字段。 有没有办法在 pmd xml 文件中做到这一点,例如使用 violationSuppressXPath,即使它是一个 java 类? 或者,violationSuppressXPath 是否只能完全避免应用该规则?

我想通过注解 @WireVariable 或名称(以“服务”结尾)来识别 Spring 服务。

【问题讨论】:

  • 此解决方案(忽略带注释的方法)可能会有所帮助:stackoverflow.com/a/34919039/4014509。我是 PMD 规则集菜鸟,但我确信为字段创建类似的 XPath 表达式是没有问题的。

标签: pmd


【解决方案1】:

将字段作为 Spring 注入服务并不会减少字段,因此字段过多仍然不是一个好习惯。向类添加新功能的开发人员必须处理所有这些字段。

您可以仅针对每个班级取消警告,如下所示:

@SuppressWarnings("PMD.TooManyFields")
public class Foo {
...
}

【讨论】:

  • 谢谢,但我问的是在规则集中做的一种方法,而不仅仅是忽略警告。
  • 不可能,TooManyFields 规则只有maxfields 选项。调优是指重写?
【解决方案2】:

添加以下规则

 <rule ref="category/java/design.xml" >
   <exclude name="TooManyFields" />
 </rule>

【讨论】:

  • 感谢您提供此代码 sn-p,它可能会提供一些有限的即时帮助。 proper explanation 将通过展示为什么这是解决问题的好方法,并使其对有其他类似问题的未来读者更有用,从而大大提高其长期价值。请edit您的回答添加一些解释,包括您所做的假设。
  • 很抱歉,但这会将 TooManyFields 规则作为一个整体移除。我的问题是关于能够从规则计数中删除注入的服务,这不是 atm 可用的选项。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-26
  • 1970-01-01
  • 2011-05-08
相关资源
最近更新 更多