java - PMD:为什么有 2 个名为 UnusedImports 的规则并且它们使用不同的 java 类?

标签 java xml pmd

当我清理我们正在使用的 PMD 文件时,我惊讶地发现在 PMD5 中,有 2 个名为 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)有同样的问题。

最佳答案

类型解析规则集是随着 PMD 中类型解析支持的成熟而创建的临时规则集(即,PMD 能够使用实际类而不是简单的字符串来确定变量和对象的类型)。这样做是因为担心实验功能会引入影响稳定(旧)规则实现的用户的问题。

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

在过去的几个版本(5.1.0 及更高版本)中,PMD 在类型解析方面有了很大的改进,无论是在准确性还是性能上,目前最新版本的 Gradle 和 Maven 插件都可以通过以下方式启用它:默认并确保 PMD 可以立即使用类型解析规则集。

目前正在进行一个 Google Summer of Code 项目(我个人指导该项目),以完成类型解析支持的所有缺失部分,并完全删除类型解析规则集,只需覆盖具有类型解析能力的所有规则可用时的替代方案。

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

关于java - PMD:为什么有 2 个名为 UnusedImports 的规则并且它们使用不同的 java 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43800383/

相关文章:

java - 用Java解析curl响应

java - 在 Java 中将对象序列化为 XML 会忽略我的对象的一些变量字段

sql - 如何在 DB2 中运行 SQL 并返回漂亮的 XML

java - PMD 的数据流异常分析警告

java - PMD+Maven+JAVA 错误::找不到资源规则集/comments.xml。确保资源是有效的文件或 URL 或者在 CLASSPATH 上

java - 如何获取嵌套属性的方法?

java - spring boot 2.0.1 版本中的 GridFSDBFile

java - "No suitable method found for sort(List<VarStatusMsg<? extends Number>>)"JDK错误

xml - 用于声明命名空间的 XQuery 语法 : [XPST0081] No namespace declared for 'text:p'

maven - 使 Maven PMD 插件打印错误到控制台