我想调整TooManyFields PMD规则,这样它就不会将我注入的服务计为字段。有没有办法在pmd xml文件中做到这一点,例如使用virelationSuppressXPath,即使它是一个java类?还是 违规抑制XPath 只是为了避免应用规则?
我想通过注释@WireVariable或名称(以"服务"结尾)来识别 Spring 服务。
将字段作为 Spring 注入的服务并不会减少字段,因此拥有太多字段仍然不是一个好的做法。向类添加新功能的开发人员将不得不处理所有这些字段。
您只能禁止显示每个类的警告,如下所示:
@SuppressWarnings("PMD.TooManyFields")
public class Foo {
...
}
添加以下规则
<rule ref="category/java/design.xml" >
<exclude name="TooManyFields" />
</rule>
首先:这条规则完全是胡说八道。字段计数由您正在建模的实体和对象驱动,因此中断设计并将内容分发到不同的类通常会降低清晰度。
对于服务的东西,有一个可用的应用程序:使用继承并将所有服务放入基类中,例如
public class Services4Xyz {
@Inject
protected Something something;
...
}
public class Xyz extends Services4Xyz {
private String myText;
void foo() {
something.doSomething(myText);
}
}
其他方法是将属性分组到一个对象中。对于需要成为 Bean 的服务:
// provided as a bean
public class Services4Xyz {
@Inject
protected Something something;
public Something getSomething() {
return something;
}
...
}
public class Xyz {
@Inject
private Services4Xyz services4Xyz;
private String myText;
void foo() {
services4Xyz.getSomething().doSomething(myText);
}
}