2015-12-11 3 views
2

Я получаю исключения PMD, такие как «BeanMembersShouldSerialize» в полях с автоподстановкой. Единственный способ остановить их - использовать «переходные» или @SuppressWarnings. Мой вопрос - это то, что было бы правильным способом справиться с полями PMD и autwired.PMD исключение BeanMembersShouldSerialize on Autowired fields

@Component 
public class Sample { 

@Autowired 
private SoapProperties soapProperties; 

public void doSomething() { 
    // do something 
} 

Образец.java:13: Найден нестационарный, нестационарный член. Пожалуйста, отметьте как переходный период или предоставите аксессуаров.

ответ

1

Я думаю, есть два варианта. Во-первых, вот documentation for the check.

Первый вариант - добавление супрессии к вашему правилу через свойства: нарушениеSuppressRegex, нарушениеSuppressXPath, префикс. Я не использовал опции Regex и XPath, но XPath интересен - если вы научитесь писать его, вы также можете реализовать совершенно новые проверки (синтаксис и структура AST немного сложны). Пример того, как выглядит supression в вашем файле ruleset.xml, а может быть, и больше информации see this answer.

Вторым вариантом является привязка к нему кода Java-кода проверки и реализация исключения для его аутсорсинга, а затем ссылка на ваш класс в наборе правил, при отключении оригинальной проверки BeanMembersShouldSerialize. Я думаю, что это будет сложнее и, скорее всего, потребует обслуживания на линии.

+0

Этот ответ при написании новых чеков XPath также может быть полезен: http://stackoverflow.com/a/33977637/293115 – HairyFotr