如何从命令行使用静态代码分析器CPD ignoreLiterals和ignoreIdentifiers?

时间:2011-08-10 03:01:46

标签: static-analysis pmd cpd

这是关于PMD静态分析仪的功能:复制粘贴检测器。

是的,我彻底阅读了http://pmd.sourceforge.net/cpd.html

但如果我从ant-task运行CPD,我可以通过指定ignoreLiteralsignoreIdentifiers来微调其工作。如何使用命令行指定这些键?

2 个答案:

答案 0 :(得分:1)

我认为目前不可能(使用pmd 4.2.6和pmd 4.1.1)。

一个简单的Properties对象包含ignoreLiteralsignoreIdentifiers设置,但命令行CPD.main()方法不会将任何Properties对象传递给LanguageFactory as蚂蚁任务(CPDTask)的确如此。此外,如果我是正确的,CPDTask将这些属性传递给LanguageFactory.createLanguage(String language, Properties properties)方法,但此方法不使用properties参数。因此,IMO {ant}任务会忽略ignoreLiteralsignoreIdentifiers设置。

Here is an old issue about this,仍然是开放的。补丁看起来正确,也许它仍然有效。不幸的是,它不包含命令行CPD类的任何修复。也许它修复了蚂蚁任务。无论如何,如果你真的需要这个功能,解决这些问题看起来并不太难。

答案 1 :(得分:0)

根据sourceforge PMD 4.3的说明,此问题已修复。