Как изменить существующие правила PMD

Было много вопросов о создании новых правил и создании наборов правил. Это также темы, затронутые (или я должен упомянуть) официальной документацией.

Но что, если я хочу адаптировать существующее правило? Например, я хочу изменить правило "статические конечные члены должны быть заглавными", чтобы игнорировать регистратор. Я знаю, что это решение является спорным, но мы достигли общего консенсуса по этому вопросу.

Нужно ли загружать и настраивать исходный код? Я надеюсь, что есть лучший способ.

Более эффективный способ также может включать использование другой среды для анализа кода с простой настройкой, хотя я бы предпочел не менять лошадей в середине потока.

3 ответа

Решение

Вы, несомненно, уже отошли от этого, но даете ответ тем, кто увидит этот вопрос в будущем.

Вы можете расширить правило Java, создав собственное правило Java, которое подразделяет встроенное правило PMD. Затем вы создаете свой собственный набор правил XML, который указывает на ваше правило Java.

К сожалению, правило VariableNamingConventions имеет всю логику в частном методе без точек расширения. Возможно, вам лучше создать свое собственное правило, которое обернет их. Таким образом, вы можете проверить ваш особый случай, а затем делегировать существующее правило для остальных.

Вы можете использовать XPath для создания своей копии правила прямо в файле набора правил. Декларативная природа XPath тоже требует некоторого привыкания, но может усложнять сложные правила.

http://techtraits.com/programming/2011/11/01/writting-pretty-code-with-pmd.html

http://blog.code-cop.org/search/label/PMD

В Eclipse перейдите на Windows -> Prefernces -> PMD -> Rule Configration

Проверьте "Use Global..."

Прокрутите и найдите VariableNamingConvention, w/ ruleset Naming

Нажмите "Rule Designer" кнопка

Нажмите вкладку Исключения

добавлять VariableDeclaratorId[@Image='logger'] в XPath выражение исключения

Нажмите OK, а затем повторно запустите PMD Check Code


+ Изменить logger термин выше, чтобы ваше имя переменной.

Другие вопросы по тегам