Autowired 字段上的 PMD 异常 BeanMembersShouldSerialize

cla*_*smc 5 java spring pmd autowired

我在自动装配字段上收到诸如“BeanMembersShouldSerialize”之类的 PMD 异常。阻止它们的唯一方法是使用“transient”或@SuppressWarnings。我的问题是处理 PMD 和自动连线字段的正确方法是什么。

@Component
public class Sample {

@Autowired
private SoapProperties soapProperties;

public void doSomething() {
    // do something
}
Run Code Online (Sandbox Code Playgroud)

Sample.java:13:找到非瞬态、非静态成员。请标记为瞬态或提供访问器。

Hai*_*otr 1

我想有两个选择。首先,这是检查的文档

第一个选项是通过以下属性向规则添加抑制:violationSuppressRegex、violationSuppressXPath、前缀。我还没有使用过 Regex 和 XPath 选项,但是 XPath 很有趣 - 如果您学会编写它,您还可以实现全新的检查(尽管语法和 AST 结构有点神秘)。有关规则集中抑制的示例,也许还有更多信息,请参阅此答案

第二个选项是获取链接在那里的检查的java代码,并在那里实现自动装配的异常,然后在规则集中引用您的类,同时禁用原始BeanMembersShouldSerialize检查。我认为这会更困难,并且更有可能需要后续维护。