一、简介
Findbugs 是一个静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题。利用这个工具,就可以在不实际运行程序的情况对软件进行分析。它可以帮助改进代码的质量。
Findbugs 提供了方便操作的可视化界面,同时也可以作为 Eclipse 的一个插件来使用,而我们使用得最多的还是作为 Eclipse 的插件来使用。
二、使用方法
Findbugs 可以通过三种方法使用,可以通过 Ant 工具,通过 Ant 提供的 Swing 操作界面和作为 Eclipse 的一个插件来使用。
1. Ant工具
Ant是一个很好的Java自动执行工具。
Findbugs 官方提供了 Ant 的 findbugs 操作方法,我们可以通过这样一个 build.xml 文件来使用 findbugs 。
<project name=" 项目名 " default="all">
<property name= "findbugs.home" value= "findbugs 解压路径 " />
<path id= "findbugs.path" >
<fileset dir= "findbugs 解压路径 " >
<include name= "**/*.jar" />
</fileset>
</path>
<taskdef name= "findbugs"
classname= "edu.umd.cs.findbugs.anttask.FindBugsTask"
classpathref= "findbugs.path" />
<!-- 定义 findbugs 的 home , findbugs 的 task 要使用 -->
<target name= "findbugs" >
<findbugs home= "${findbugs.home}"
output= "xml:withMessages" outputFile= " 生成的文件 " >
<!-- 以上定义 findbugs 查找的类路径 -->
<auxClasspath path= "${findbugs.home}/lib/findbugs-ant.jar" />
<auxClasspath>
<fileset dir= "lib"
includes= "*.jar" />
</auxClasspath>
<sourcePath path= " 源文件路径 " />
<class location= " 生成类路径 " />
</findbugs>
</target>
</project>
比如:我这里有一个我放在博客上的项目的findbugs的ant操作的build文件。
<project name="Calendar" default="all">
<property name= "findbugs.home" value= "../../findbugs-1.3.8" />
<path id= "findbugs.path" >
<fileset dir= "../../findbugs-1.3.8" >
<include name= "**/*.jar" />
</fileset>
</path>
<taskdef name= "findbugs"
classname= "edu.umd.cs.findbugs.anttask.FindBugsTask"
classpathref= "findbugs.path" />
<!-- 定义 findbugs 的 home , findbugs 的 task 要使用 -->
<target name= "findbugs" >
<mkdir dir= "target/findbugs" />
<findbugs home= "${findbugs.home}"
output= "xml:withMessages" outputFile= "target/findbugs/calendar-fb.xml" >
<!-- 以上定义 findbugs 查找的类路径 -->
<auxClasspath path= "${findbugs.home}/lib/findbugs-ant.jar" />
<auxClasspath>
<fileset dir= "lib"
includes= "*.jar" />
</auxClasspath>
<sourcePath path= "src" />
<class location= "target/classes" />
</findbugs>
</target>
</project>
设置好 Ant 的环境后,在命令中使用 ant -f build.xml ,或者在 Eclipse 直接运行 build.xml 文件,运行后生成了一个 xml 文件,如果你想用 Html 的格式查看 findbugs 的结果,可以把 output 属性设为: html 。这样就可以通过 Html 来查看 findbugs 的结果了。
2. 提供的 Swing 工具
Ant操作是专家级的操作,一般对于Java不是很熟悉的人,写build.xml文件。比起 Ant 来,使用 Findbugs 提供的 Swing 工具会使 Findbugs 的操作更加简单。运行 Findbugs 解压包中的 bin 文件夹下的 findbugs.bat 文件。
Findbugs 的 Swing 工具初始主界面如下:
在分析项目之前,我们必须要新建一个项目来分析,选择文件 -> 新建
显示新建项目的界面如下图:
然后添加要分析的类包和目录(可以选择编译好的类所在的文件夹,也可以选择生成的
jar
包),再添加辅助类所在的文件夹和源文件所在的文件夹(
java
文件所在的文件夹)。再点击完成就可以建立一个要分析的项目。
建立项目后,会自动先自动开始解析项目。
解析后界面:
其中左边是缺陷的树结构列表,点击其中一个 Bug ,可以在右边的界面中,显示 Bugs 的源文件以及所在的位置。
2.3 Findbugs Eclipse 插件
Eclipse的Findbugs 插件,可以将 Findbugs 集成到 Eclipse 中使用。
2.3.1 Findbugs 的 Eclipse 插件安装方法
1. 在线安装
安装地址: http://findbugs.cs.umd.edu/eclipse
2. 离线安装
下载 Findbugs 插件,将它放入 Eclipse 下的 plusin 文件夹,然后重启 Eclipse
2.3.2 Findbugs 的 Eclipse 插件使用
安装了 Findbugs 插件后。右击点击你要检查的项目选择【 Find Bugs 】 -> 【 Find Bugs 】进行检查。
要查看 Findbugs 检查出了哪些 Bug ,可以选择 Windows 菜单 ->Show View->Bug Explorer ,打开 Bug Explorer 面板。
如果想要查看某个 Bug 详细的信息,则可以选择 Windows 菜单 ->Open Perspective ,然后选择 FindBugs 就可以打开 FindBugs 的 Properties 面板,在这个面板里面可以看到最详尽的 Bugs 信息。