1

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

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

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

4

2 回答 2

1

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

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

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

于 2011-09-20T21:37:02.047 回答
0

根据sourceforge的 PMD 4.3 的注释,此问题已得到修复。

于 2012-01-23T20:44:20.513 回答