首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > Java > Java Lint 工具
【标  题】:Java Lint 工具
【关键字】:Java,Lint
【来  源】:http://www.cublog.cn/u/17347/showart.php?id=104670

Java Lint 工具

Java Lint 工具
 
Stephen Suen
Copyright © 2005 Stephen Suen. All rights reserved.

如果你在编译 Java 程序时,碰到类似"注意: 要了解详细信息,请使用 -Xlint:deprecation 重新编译"这样的提示,而且你对选项 -Xlint 感到困惑的话,本文或许会带给你一些有趣且有用的信息。
本文的最新版本将发布在程序员咖啡馆网站上(建设中)。欢迎订阅我们的邮件组,以获得关于本文的正式发布及更新信息。全文在保证完整性,且保留全部版权声明(包括上述链接)的前提下可以在任意媒体转载——须保留此标注。
 
--------------------------------------------------------------------------------
目录
1. 简介
2. Lint
3. Java Lint 选项
1. 简介
如果你已经开始使用 JDK 1.5(或者称为 JDK 5.0),那么你很可能在编译时,已经看到过类似如下的警告信息:
注意: E:\sandbox\src\DefaultController.java 使用或覆盖了已过时的 API。
注意: 要了解详细信息,请使用 -Xlint:deprecation 重新编译。
或者这个:
注意: E:\sandbox\src\DefaultController.java 使用了未经检查或不安全的操作。
注意: 要了解详细信息,请使用 -Xlint:unchecked 重新编译。
这些警告不难理解。如果愿意,只要按照提示在编译时指定相应的选项就可以了。可是,如果你也像我一样,困惑于这个编译选项中晦涩的英文(-Xlint),以至于经常要借助参考手册才能想起这个选项的用词或者拼写,那么这篇短文或许对你有些帮助。
2. Lint
在介绍这些关于警告的选项前,我们先看看 lint 究竟是什么。在英文中,lint 是指纠缠在一起的细小纤维或者绒毛,比如衣物上面起的毛或者线头。咋看起来,这个词用在 Java 编译器选项中,似乎有点风马牛不相及。但是如果你知道一个古老的 Unix 工具被命名为 lint(1),那就另当别论了。
在 Unix 中,实用工具 lint(1) 用于在对程序编译的过程中,对程序进行更为细致的额外检查,比如使用未经初始化的变量等常见的编程问题。如此命名该工具,正是借用了"lint" 一词的含义:将"lint"从程序中挑拣出来,从而使程序更"干净"。
现在我们至少对选项中的 "lint" 有了一些有趣的认识了,记住这个词应该问题不大了。随后,我们将简单地了解一下 Java 的 lint 工具。当然,因为 lint 工具当然会涉及到语言规范中的一些知识,而这篇短文显然不适合阐述这些知识。如果对相关内容有兴趣,可以参考其它资料。
3. Java Lint 选项
Java 编译器的选项包括所谓的标准选项和非标准选项。标准选项是指在当前版本的开发环境中支持,且在未来版本中也将被支持的选项。常用的标准选项比如-classpath 以及 -d 等等。
非标准选项是在当前版本的开发环境中支持,但不能保证将来一定会继续支持的选项。非标准选项都由 -X 开头,比如我们这里所关心的 Java Lint 选项都由 -Xlint 开头。需要先说明的是,单纯的选项 -X 本身是一个标准选项,作用是显示关于非标准选项的信息。参考这个例子:
E:\>javac -X
  -Xlint                     启用建议的警告
  -Xlint:{all,deprecation,unchecked,fallthrough,path,serial,finally,-deprecation
,-unchecked,-fallthrough,-path,-serial,-finally}启用或禁用特定的警告
  -Xbootclasspath/p:<路径>     置于引导类路径之前
  -Xbootclasspath/a:<路径>     置于引导类路径之后
  -Xbootclasspath:<路径>       覆盖引导类文件的位置
  -Djava.ext.dirs=<目录>       覆盖安装的扩展目录的位置
  -Djava.endorsed.dirs=<目录>  覆盖签名的标准路径的位置
  -Xmaxerrs <编号>             设置要输出的错误的最大数目
  -Xmaxwarns <编号>            设置要输出的警告的最大数目
  -Xstdout <文件名>             重定向标准输出
这些选项都是非标准选项,如有更改,恕不另行通知。
我们依次来看看其中涉及 lint 的选项:

-Xlint
启用所有警告。该选项相当于 -Xlint:all 选项。相反,关闭所有警告的选项为 -Xlint:none。
-Xlint:unchecked
启用对所谓的未经检查的转换(unchecked warning)的警告。这个警告涉及 JDK 5.0 中的新特性——范型(Generic Type),这绝对是另外一个故事了。有兴趣的话,可以在 Internet 上搜索到很多关于范型的文章。
-Xlint:path
当发现不存在的路径或者目录时给出警告,比如标准选项中的类路径(classpath),源代码路径(sourcepath)等等。
-Xlint:serial
当在可序列化的类中没有发现 serialVersionUID 的定义时,给出警告。
Xlint:finally
当发现 finally 子句无法正常结束的情况时给出警告。比如下面这段代码:
try {           
} catch (Exception e) {
} finally {
    for (;;);
}
-Xlint:fallthrough
当在 switch 语句块中发现 fall-through 的情形时给出警告。这里所说的 fall-through 情形指的是在 switch 语句块中,除了最后一个 case 之外的其它 case 中没有包含 break 语句,导致执行代码时从一个 case 直接穿过执行到了下一个 case 中。比如下面这段代码:
switch (color) {
case GREEN:
 System.out.println("green");
 // 没有 break 语句;fall-through
case RED:
 System.out.println("red");
 break;
case YELLOW:
 System.out.println("yellow");
}
-Xlint:deprecation
显示关于使用了过时的 API 的详细信息。这个选项等同于一个我们熟悉的标准选项,即 -deprecation 选项。相对其它 lint 选项而言,该选项的特别之处在于,即使你关闭了它,编译器仍然会简单地提醒你某个类中使用了过时的 API。只是启用该项警告时,显示的信息将更详细而以。
上面提到的这些 lint 选项中的警告名称(冒号后面的部分),可以加以组合,从而有选择的开启或者关闭特定的一组 lint 警告选项,比如 -Xlint:deprecation, finally 表示开启 deprecation 和 finally 警告。还可以在警告名称前加上"-"表示关闭该项警告,比如 -Xlint:all,-unchecked 表示开启除了 unchecked 之外的所有警告。
关于 Java 编译器命令的完整参考请见 javac - Java programming language compiler
 
Eclipse的log4j插件log4e的用法:【上一篇】
在Java中Vector和ArrayList的区别:【下一篇】
【相关文章】
  • javascript小技巧[转]
  • javascript的prototype
  • JavaMail 深入浅出
  • Java学习之路:不走弯路,就是捷径
  • [转载]Java随机数类Random介绍 && 修饰符总结
  • Java Services Orchestration for Actions(J-SOFA )
  • 使用JavaMail收发邮件,解决了中文附件名问题
  • 值得收藏!javascript技巧大全
  • Java WS Core 常见错误与解决方案(增加中)
  • (Javascript)prototype的一个优势也是缺点
  • 【随机文章】
  • 用C++ Builder创建数字签名
  • .NET框架类览胜(下篇)
  • rmi部署成功
  • 检查方法参数,平凡处的学问
  • Gama的Effective C++ 学习笔记 -- E03
  • 乱点“观察者模式"
  • Ibatisnet介绍
  • Linux information
  • [展示]EddieTorque小组成员jiangjiang.c游戏建模作品(jiangjiang.c's 3ds max pretty model)
  • 揭密 Windows 2000 系统目录功能
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.