2015-12-11 133 views
2

我在自动布线字段上得到像“BeanMembersShouldSerialize”这样的PMD异常。阻止他们的唯一方法是使用“transient”或@SuppressWarnings。我的问题是什么才是处理PMD和自动布线领域的正确方法。PMD异常BeanMembersShouldSerialize on Autowired fields

@Component 
public class Sample { 

@Autowired 
private SoapProperties soapProperties; 

public void doSomething() { 
    // do something 
} 

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

回答

1

我猜有两种选择。首先,这是documentation for the check

第一个选项是通过以下属性为规则添加抑制:violationSuppressRegex,violationSuppressXPath,前缀。我还没有使用正则表达式和XPath选项,但XPath很有趣 - 如果你学会编写它,你也可以实现全新的检查(虽然语法和AST结构有点神秘)。有关如何在ruleset.xml中查看抑制的示例,或许还有其他信息see this answer

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

+0

编写新的XPath检查时的这个问题也可能有用:http://stackoverflow.com/a/33977637/293115 – HairyFotr

相关问题