Как использовать статический анализатор кода CPD ignoreLiterals и ignoreIdentifiers из командной строки?

Речь идет о функции статического анализатора PMD: Детектор копирования-вставки.

Да, я внимательно прочитал http://pmd.sourceforge.net/cpd.html.

Но если я запускаю CPD из ant-task, я могу тонко настроить его работу, указав ignoreLiterals и ignoreIdentifiers. Как я могу указать эти ключи с помощью командной строки?


person Andrey Regentov    schedule 10.08.2011    source источник


Ответы (2)


Я думаю, что в настоящее время это невозможно (с pmd 4.2.6 и pmd 4.1.1).

Простой объект Properties содержит настройки ignoreLiterals и ignoreIdentifiers, но командная строка CPD.main() не передает объект Properties в LanguageFactory в качестве задачи ant (CPDTask ) делает. Кроме того, если я прав, CPDTask передают эти свойства в LanguageFactory.createLanguage(String language, Properties properties), но этот метод не использует аргумент свойств. Итак, IMO настройки ignoreLiterals и ignoreIdentifiers игнорируются задачей ant.

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

person palacsint    schedule 20.09.2011

Согласно примечаниям для PMD 4.3 на sourceforge, эта проблема устранена.

person ldav1s    schedule 23.01.2012