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

时间:2011-04-05 20:20:11

标签: java ant command-line-arguments javac

是否有Sun命令行参数在引用未使用的import语句时提供警告(或错误)?嵌入式eclipse javac编译器提供了这样的警告,但是如果Sun / Oracle编译器将它作为-Xlint:XXX个参数之一,则没有详细记录。

我正在寻找清理现有的Java代码库,它是使用Ant从命令行构建的,我希望将这些语句的跟踪和报告集成到每晚构建中。

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

2 个答案:

答案 0 :(得分:2)

我建议您查看FindBugs,以便在每晚构建过程中报告代码的清洁度。与JDK Java编译器或Eclipse中的编译器相比,FindBugs可以检测到更多潜在的问题。

答案 1 :(得分:1)

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

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

  1. 文件中未引用的非通配符导入。
  2. 与另一个导入重复的导入。
  3. java.lang包导入。
  4. 从与该类相同的包中导入。
  5. (可选)仅用于解析JavaDoc链接的导入。
  6. 实际上,它会创建一个不使用java.awt.Component的报告(以及行号)。

    import java.awt.Component;
    class FooBar {
        ...
    }
    

    它确实有一些限制,在某种意义上它可能被与导入同名的成员混淆;但是,这种失败很少发现它适用于大多数开发人员。

    从文件到限制

    import java.awt.Component;
    class FooBar {
        private Object Component; // IMHO bad practice
        ...
    }
    

    Component标记为未使用。