WEB开发网
开发学院软件开发Java 使用 IBM 静态工具优化 Java 代码,第 1 部分: 工... 阅读

使用 IBM 静态工具优化 Java 代码,第 1 部分: 工具入门

 2010-01-11 00:00:00 来源:WEB开发网   
核心提示: 首先,它模仿 javac 的使用,使用 IBM 静态工具优化 Java 代码,第 1 部分: 工具入门(2),语法和 javac 相似,支持许多 javac 的常用命令参数,而 BEAM 只有在发现了确凿的证据证明除数 N 可能为 0 时才会报错,例如清单 2 和清单 3,而且具有相同的语义,比

首先,它模仿 javac 的使用,语法和 javac 相似,支持许多 javac 的常用命令参数,而且具有相同的语义,比如 -classpath,-source,-d 等等;不仅如此,它还模仿 javac 接受相同的源文件,只不过不是编译,而是分析检查这些源文件。这样习惯于 javac 的开发人员就可以很轻松的学会使用。

其次,许多静态分析工具报错的准确性较低,很多被这些工具标记为错误的代码事实上是正确的,这样会增加程序员工作量,并有可能掩盖真正的错误。而 BEAM 使用了额外的定理证明(theorem proving)技术来判断一个潜在的错误是否是真正的错误,从而减轻了程序员判断错误真伪所需的工作量。例如:


清单 1. 代码示例
 int Average(int Sum, int N) 
 { 
   return Sum / N; 
 } 

很多静态分析工具遇到清单 1 的代码会报除数为 0 的错误,而事实上如果清单 1 所在的整个代码工程中,进入 Average 的参数 N 永远都不可能为 0 的话,这个错误就不能算是真正的错误。而 BEAM 只有在发现了确凿的证据证明除数 N 可能为 0 时才会报错。例如清单 2 和清单 3,都会报除数为 0 的错误。


清单 2. 报错代码示例 1
 int Average(int Sum, int N) 
 { 
   if ( N == 0 ) // 这里证明 N 有可能等于 0 
   X = 1; 
   
   return Sum / N; 
 } 


清单 3. 报错代码示例 2
 int Average(int Sum, int N) 
 { 
   if ( N != 0 ) // 这里证明 N 有可能允许等于 0 
   X = 1; 
   
   return Sum / N; 
 } 

上一页  1 2 3 4 5 6 7  下一页

Tags:使用 IBM 静态

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接