Welcome 微信登录

首页 / 软件开发 / JAVA / 使用 IBM 静态工具优化 Java 代码,第 2 部分: 分析错误报告

使用 IBM 静态工具优化 Java 代码,第 2 部分: 分析错误报告2011-05-07 IBM 丁钦浩概述

BEAM 报告的结果文件是通过 build.xml 中 --beam::complaint_file 所定义的,在这 里,本文假设其为 BEAM-messages。BEAM-messages 记录着报出的所有代码缺陷,这些缺陷 分为 ERROR,MISTAKE 和 WARNING 三大类,严重程度依次递减。每一个具体的 ERROR, MISTAKE 和 WARNING 都代表着一个错误模式,本文接下来就通过实例分析理解其中的某些 重要错误模式,告诉读者在写 Java 代码时如何避免这些错误模式的发生,从而写出高质量 的代码。

由于篇幅原因,本文只主要重点介绍四个常见的错误模式,并在最后简单介绍一下在编 程时还应该注意的一些其它技巧,文章结构如下:

操作空对象

数组访问越界

除 0 错误

内存泄漏

其它技巧

操作空对象

这是报出的 ERROR2 错误模式。据个人项目经验,这种错误模式出现最为频繁,但是编 程人员却往往很难发现,因为这种编译器发现不了的错误可能在代码运行很长时间时都不会 发生,可是一旦出现,程序就会终止运行,并抛出 runtime 异常 java.lang.NullPointerException。通常有以下这些情况会导致操作空对象错误模式的发生 。

调用空对象的方法

访问或修改空对象的域

访问或修改空数组对象的数组元素

同步空对象

传入空对象参数

下面让我们用简单易懂的例子一一介绍它们。

调用空对象的方法

清单 1. 调用空 String 对象的 charAt() 方法

String str = null;
int a = 0;

if( a > 0 ) {
str = new String[]{ "developer " , "Works"};
}

char ch = str.charAt(0);

这是最典型的调用空对象方法的例子,调用一个未初始化的 String 对象的 chatAt() 方法。