如何调整 PMD TooManyFields 规则以忽略注入的服务



我想调整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);
    }
}

最新更新