未使用的包含警告的 Javac 配置参数?

Edw*_*uck 5 java ant javac command-line-arguments

是否有 Sun 命令行参数来提供有关未使用import语句的警告(或错误)?嵌入式 eclipse javac 编译器提供了此类警告,但如果 Sun/Oracle 编译器将其作为其-Xlint:XXX参数之一,则没有很好的文档记录。

我希望清理现有的 Java 代码库,该代码库使用 Ant 从命令行构建,我希望将此类语句的跟踪和报告集成到每晚构建中。

有些人认为导入对编译过程没有影响,但是查看编译器操作(使用 -verbose 标志)表明编译器无条件加载导入的类,即使它们没有在书面输出中使用。因此,删除未使用的导入似乎比一目了然的代码理解有更多的好处。

Edw*_*uck 2

使用checkstyle,并配置UnusedImports要使用的模块(或选择已使用它的默认配置)。

Checkstyle 将未使用的导入定义为:

  1. 文件中未引用的非通配符导入。
  2. 与另一个导入重复的导入。
  3. 从包中导入java.lang
  4. 从与类相同的包中导入。
  5. (可选)仅解析 JavaDoc 链接所需的导入。

实际上,它会创建一个java.awt.Component未使用的报告(以及行号)。

import java.awt.Component;
class FooBar {
    ...
}
Run Code Online (Sandbox Code Playgroud)

它确实有一些限制,从某种意义上说,它可能会被与导入同名的成员混淆;但是,对于大多数开发人员来说,这种失败很少被付诸实践。

从文档来看限制

import java.awt.Component;
class FooBar {
    private Object Component; // IMHO bad practice
    ...
}
Run Code Online (Sandbox Code Playgroud)

不会标记Component未使用。