PMD:为什么有两个名为UnusedImports的规则,哪些使用不同的java类?

时间:2017-05-05 08:44:11

标签: java xml pmd

当我清理我们正在使用的PMD文件时,我惊讶地发现在PMD5中,有两个名为UnusedImports的规则: - One from imports.xml - One from typeresolution.xml

描述并不完全相同,但它的含义似乎相同。 那么有人知道为什么2条规则以及为什么最旧的规则如果不能处理静态导入而被弃用?

LooseCoupling(coupling.xml& typeresolution.xml),CloneMethodMustImplementCloneable(clone.xml& typeresolution.xml),SignatureDeclareThrowsException(strictexception.xml& typeresolution.xml。

的相同问题

1 个答案:

答案 0 :(得分:1)

typeresolution规则集是一个临时规则集,是在PMD中成熟的类型解析支持创建的(也就是说,PMD使用实际类而不是简单字符串来确定变量和对象类型的能力)。这样做是因为担心实验性功能会引入影响稳定(旧)规则用户的问题。的实施方式。

现在,鉴于您在auxclasspath中为PMD提供了所有依赖关系,类型解析规则应该提供更好的结果(可以避免大量误报/漏报)。这也意味着分析成本更高。

在过去几个版本(5.1.0及更高版本)中,PMD在类型分辨率方面有很大提高,无论是在准确性还是在性能方面,都达到了最新版本Gradle和Maven插件目前默认启用它,并确保PMD可以使用开箱即用的类型解析规则集。

目前正在进行Google Summer of Code项目(我个人指导),以完成所有缺失的类型解析支持,并使用它,完全删除typeresolution规则集,简单地覆盖所有规则及其类型解析能力替代方案。

底线,类型分辨率规则是等效的,但更好。将它们与当前版本的Maven / Gradle一起使用是自动的。使用Ant / CLI执行此操作需要额外配置。