makefile 之 java -X 之 lint

来源:互联网 发布:用友软件培训中心 编辑:程序博客网 时间:2024/05/02 02:29

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 之外的所有警告。 

 

 

一个makefile简单实例:

# nash635
# RoboCup2009 DUT_rescue

src := $(wildcard *.java  */*.java */*/*.java */*/*/*.java */*/*/*/*.java)
sucs := -d .
path := -classpath ./swt.jar

all:
    javac -Xlint:all $(path) $(sucs) $(src)
 
.PHONY: clean
 
clean:
    rm -f *.class  */*.class  */*/*.class  */*/*/*.class  */*/*/*/*.class
    rm -f *~       */*~