初用FindBugs
一、概述
FindBugs 是一个静态分析工具,在程序不需运行的情况下,分析class文件,将字节码与一组缺陷模式进行对比,试图寻找真正的缺陷或者潜在的性能问题。
二、安装及运行
要使用FindBugs,请先安装JDK1.4以后的版本。
1.安装
a. 从http://sourceforge.net/的下载最新的FindBugs,Unix平台是tar.gz文件,Windows平台是zip文件。
b. 解开下载下来的压缩包,如(Unix平台):
$ tar xzvf findbugs-0.8.4.tar.gz
c.设置FINDBUGS_HOME,在Unix平台下,可把如下内容写入用户的.profile文件:
FINDBUGS_HOME=/home/docomo/findbugs-0.8.4(假定的安装目录)
export FINDBUGS_HOME
2.运行
执行${FINDBUGS_HOME}/bin/findbugs即可启动findbugs图形界面,由于图形界面操作比较简单,不再赘述。
三、在ANT中使用FindBugs
1. 将FindBugs ANT任务拷贝到ANT的lib目录,这样ANT就知道新的任务。
$ cp ${FINDBUGS_HOME}/lib/FindBugs_ant.jar ${ANT_HOME}/lib
2. 因为FindBugs是一个自定义任务,将需要使用taskdef
任务以使 Ant 知道装载哪一个类。
在ANT的build.xml中加入以下内容:
<taskdef name="findbugs" classname="edu.umd.cs.FindBugs.anttask.FindBugsTask"/>
定义了taskdef后,就可用名字findbugs引用了。
3.在build文件用使用新任务findbugs
<target name="FindBugs" depends="compile">
<FindBugs home="${FindBugs.home}" output="xml" outputFile="/home/docomo/report/findbugs.xml">
<class location="/home/docomo/dist/SimulatorEL.jar" />
<auxClasspath path="${project.lib}/d3apf.jar" />
<sourcePath path="/home/docomo/SimulatorEL/src" />
</FindBugs>
</target>
说明如下:
a. FindBugs
处理的是类文件而不是源文件,因此需要先编译,depends=”compile”,FindBugs 可以灵活地接受多种输入,包括一组类文件、JAR 文件、或者一组目录;
b. 可选属性 output
指定 FindBugs 的结果使用的输出格式,格式可为xml、txt、emacs。
c. class
元素用于指定要 FindBugs 分析哪些 JAR、类文件或者目录。分析多个 JAR 或者类文件时,要为每一个文件指定一个单独的 class
元素。
d. auxClasspath列出应用程序需要但不希望 FindBugs 分析的类,如编译所需的JAR包等。
e. 如果指定了 sourcePath
元素,那么 path
属性应当表明一个包含应用程序源代码的目录。指定目录使 FindBugs 可以在 GUI 中查看 XML 结果时突出显示出错的源代码。这个元素是可选的。
使用FindBugs的图形界面打开输出的文件/home/docomo/report/findbugs.xml,即可看到FindBugs分析出的bug。