Java Lint 工具 Stephen Suen
Copyright (c) 2005 Stephen Suen. All rights reserved.
如果你在编译 Java 程序时,碰到类似"注意: 要了解详细信息,请使用 -Xlint:deprecation 重新编译"这样的提示,而且你对选项
-Xlint 感到困惑的话,本文或许会带给你一些有趣且有用的信息。
本文的最新版本将发布在程序员咖啡馆
<http://www.programmercafe.com/>网站上(建设中)。欢迎订阅我们的邮件组<http://groups.google.com/group/programmercafe>
,以获得关于本文的正式发布及更新信息。全文在保证完整性,且保留全部版权声明(包括上述链接)的前提下可以在任意媒体转载——须保留此标注。
------------------------------
*目录* 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,-deprecat ion
,-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<http://java.sun.com/j2se/1.5.0/docs/tooldocs/windows/javac.html>。
--
Stephen Suen
stephen.s...@gmail.com
http://spaces.msn.com/members/stephensuen
http://groups.google.com/group/programmercafe
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lzhw1985/archive/2009/02/09/3870391.aspx
分享到:
相关推荐
总的来说,"CodeMirror-Java"项目结合了CodeMirror的前端能力与Java的后端Lint工具,提供了一种在Web应用中编写和检查Java代码的高效解决方案。通过学习和使用这个项目,开发者可以提升Web编辑器的用户体验,同时...
《Android-Lint简易工具Lin详解》 在Android应用开发中,代码质量的把控至关重要,而Android Lint就是谷歌提供的一款静态代码分析工具,用于检查代码中的潜在问题,如性能优化、错误处理、可用性等。然而,对于一些...
2. **多种编程语言支持**:SonarLint支持多种编程语言,包括但不限于Java、JavaScript、Python、C#、C++等,覆盖了广泛的开发需求。 3. **规则定制**:SonarLint提供了大量的内置代码质量规则,开发者可以根据项目...
lint工具是Google提供的一个静态分析工具,它可以分析Android项目中的Java和XML源代码,找出可能的性能问题、错误、不一致性和潜在的bug。lint可以在构建过程中运行,也可以在IDE如Android Studio中手动触发。 2. ...
SonarLint是一款强大的代码质量检查工具,它与SonarQube平台相辅相成,致力于提升软件开发过程中的代码质量。SonarQube是一个开源的平台,主要目标是进行源代码分析,检测潜在的代码缺陷、漏洞和代码异味,从而帮助...
在Android开发过程中,确保代码质量是非常重要的,而`Lint`工具正是为了这一目的而存在的。`Lint`是一款静态代码分析工具,它能检测出代码中潜在的问题,如性能优化、错误处理、API使用不当等。然而,标准的Android ...
SonarLint是一款强大的静态代码分析工具,用于在开发过程中实时检测代码质量问题。它与SonarQube服务器相结合,可以提供更全面的代码质量管理。这款插件适用于多种集成开发环境(IDE),包括Eclipse。"sonarlint-...
《SonarLint for IntelliJ IDEA:高效代码质量管理工具》 SonarLint是一款强大的静态代码分析工具,旨在帮助开发者在编码阶段就能发现潜在的质量问题和代码缺陷。这款插件的离线版本"sonarlint-intellij-6.4.3....
SonarLint是一款静态代码分析工具,它能在编码阶段就帮助开发者发现潜在的代码质量问题,从而提高代码质量。SonarLint原生集成在IntelliJ IDEA中,但有时可能会遇到与其它插件如`scalint`的兼容性问题,因此,本篇将...
SonarLint是一款强大的静态代码分析工具,主要用于Java开发,但同时也支持多种其他编程语言。它与流行的集成开发环境(IDE)如IntelliJ IDEA紧密集成,帮助开发者在编码过程中即时发现潜在的质量问题和代码缺陷。...
`Android Retrolambda` 是一个开源工具,它使得Java 8的Lambda表达式和方法引用等特性能够在Android平台上运行,尽管Android的Dalvik VM和现在的ART runtime不原生支持这些特性。Retrolambda通过在编译阶段将Java 8...
SonarLint是一款强大的静态代码分析工具,旨在帮助开发者在编码阶段就能发现并修复代码中的潜在问题。这款工具的最新版本4适用于所有版本的IntelliJ IDEA,为用户提供了一个实时的代码质量检查环境,无需等待完整的...
Eclipse SonarLint 插件是一款强大的集成开发环境(IDE)工具,专为Java开发者设计,用于提升代码质量并遵循编码规范。这款插件实时地分析项目中的源代码,找出潜在的问题,包括错误、漏洞以及风格不佳的编程习惯,...
2. **跨语言支持**:SonarLint支持多种编程语言,如Java、JavaScript、Python、C#、C++等,确保了多语言项目的质量控制。 3. **集成规则**:SonarLint可以使用SonarQube或SonarCloud服务器上的自定义规则,也可以...
SonarLint是一款强大的代码质量检测工具,可在编码阶段就发现潜在的错误和安全漏洞,支持多种IDE,如Eclipse、IntelliJ IDEA和Visual Studio Code。它提供清晰的修复指导,帮助开发者在提交代码前进行修复。与...
2. **代码质量标准**:SonarLint支持多种编程语言,包括Java、C#、Python等,它提供了丰富的规则库,这些规则基于SonarQube社区的最佳实践和经验。 3. **集成SonarQube**:虽然SonarLint可以独立工作,但与...
SonarLint是一款静态代码分析工具,它可以帮助开发者在编码阶段发现潜在的代码质量问题。这个版本号"3.4.0.201803051332"揭示了该插件的发布日期(2018年3月5日)和一个特定的构建编号。 描述中的信息与标题相同,...
为了实现这一目标,开发者可以利用Lint工具,这是一个静态代码分析工具,它能检测出代码中的潜在问题,如性能瓶颈、错误的API使用、未使用的资源等。而"Android-Android自定义Lint检查"则涉及到如何扩展Lint的功能,...
本文将对四款广泛使用的静态源代码测试工具进行总结:Pc-lint、PMD、Logiscope 和 Purify。这些工具各具特点,适用于不同编程语言和场景,有助于提升代码质量。 1. **Pc-lint** Pc-lint是一款针对C/C++语言的强大...