2015-12-11 20 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

相關問題