FindBugs 简介

来源:互联网 发布:德国的gdp数据 编辑:程序博客网 时间:2024/06/07 07:57

一、简介

       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信息。



详细介绍



部成员的共享命名用,省得移动后要改动

Link

文件里的绝对路径而费心费力。

直接拷贝过去就可以使用。

 

 

XYZ.link

文件的内容如是:

path=../PlugInsNew/XYZ 

 

这样,如果你下载了多个插件就可以如法炮制建立多个

Link

文件,想加载哪个

插件就把哪个插件的

Link

文件放到

%ECLIPSE_HOME%\links

的目录中即

可,使用与管理都很方便,建议千万不要放在默认的安装目录中;

 

 

如果你的

%ECLIPSE_HOME%

与此不同,请修改

XYZ.link

文件里的路径

 

删除,关闭

Eclipse 

 

删除

%ECLIPSE_HOME%\links\XYZ.link

文件即可

 

 

删除

%ECLIPSE_HOME%\PlugInsNew\XYZ

整个目录及文件

 

重新启动

Eclipse

即可

 

 

 

 

使用

 

 

 

重新启动

Eclipse

后,在

Help => About Eclipse SDK => Plug-in 

Details

你可以看到由

“FindBugs Project”

提供的

“FindBugs Plug

-

in”

版本

0.0.17

插件,如下图所示:

 

 

 

 

 

 

FindBugs

的使用方法

 

 

 

FindBugs

是一个可以在

Java

程序中发现

Bugs

的程序。

 

 

 

 

它是专门用来寻找处于

“Bug Patterns”

列表中的代码的。

 

 

 

 

Bug Patterns

指很有可能是错误的代码的实例。

 

 

 

目前

FindBugs

最高版本

0.9.4

不过更新速度很快的,

你应当经常上去看

看是否有新版本发布。

Eclipse plugin for FindBugs

最高版本

0.0.17

 

 

 

系统要求

 

 

 

使用

FindBugs

至少需要

JDK1.4.0

以上版本,

FindBugs

是平台独立的,

可以运行于

GNU/Linux

Windows

MacOS X

 

等平台上。

 

 

 

运行

FindBugs

至少需要有

256 MB

内存,

如果你要分析一个很大的项目,

那就需要更加多的内存了。

 

 

 

FindBugs

独立运行和与

Ant

结合的详细操作就不介绍了,可以看官方的

文档

http://findbugs.sourceforge.net/manual/ 

 

 

独立运行的效果图如下:

 

 

 

 

 

 

本文主要介绍在

Eclipse

中使用的情况

 

 

 

打开

Bug Details

视图

 

 

 

Windows => Show View => Other… => FindBugs => BugDetails

 

 

 

 

 

 

Package Explorer

Navigator

视图中,

选中你的

Java

项目,

右键,

可以看到

“Find Bugs”

菜单项,子菜单项里有

“Find Bugs”

“Clear Bug 

Markers”

两项内容,如下图所示:

 

 

 

 

 

 

我们建立一个简单的测试文件

Test.java 

内容如下:

 

 

public class Test { private String[] name; public String[] getName() 

{ return name; } public void setName(String[] name) 

{ this.name[http://this.name] = name; } } 

 

 

 

我们点中

“Find Bugs”

,运行时会出现如下进度框:

 

 

 

运行结束后可以在

Problems

中看到增加了如下的警告信息内容

 

 

 

FindBugs

运行后的警告信息内容不仅在

Problems

视图中显示,而且将

标记在源代码标记框中,在源代码编辑器中我们可以看到警告标识,如下图:

 

 

 

 

当光标指向你的警告信息的代码上面时,就会有相应的错误提示信息,与

Eclipse

本身的错误或警告信息提示类似。

 

 

 

 

选中

Problems

视图里出现的相应问题,就会在代码编辑器里切换到相应

的代码上去,方便根据相应的提示信息进行代码的修改。

 

 

 

 

 

 

 

Problems

视图里,选中相应的问题条目,右键,在弹出的菜单中,可

以看到

“Show Bug Details”

,如下图所示:

 

 

 

 

 

 

点中它,会切换到

Bug Details

视图上去,显示更加详细的提示信息。

 

 

 

当然,在代码编辑窗口中,点击带有警告提示信息的图标时,也会自动切

换到

Bud Details

窗口去,查看详细的警告信息,如下图所示。

 

 

 

 

 

 

根据这里详细的信息,你可以得到

FindBugs

为什么会对你的代码报警告

信息,及相应的处理办法,根据它的提示,你可以快速方便地进行代码修改。

 

 

 

 

 

 

根据提示,我们将代码修改成如下,再运行就不会报有警告信息了。

 

public class Test { private String[] name; public String[] getName() 

{ String[] temp = name; return temp; } public void setName(String[] 

name) { String[] temp = name; this.name[http://this.name] = 

temp; } } 

 

 

 

配置

FindBugs 

 

 

选择你的项目,右键

 

=> Properties => FindBugs => 

 

 

 

 

 

可以配置的信息包括如上图所示的四个选项的相关设置:

 

Run FindBugs Automatically

开关

 

 

当此项选中后,

FindBugs

将会在你修改

Java

类时自动运行,如你设置了

Eclipse

自动编译开关后,当你修改完

Java

文件保存,

FindBugs

就会运行,

并将相应的信息显示出来。

 

 

当此项没有选中,你只能每次在需要的时候自己去运行

FindBugs

来检查你的

代码。

 

 

Minimum priority to report

选择项

 

 

这个选择项是让你选择哪个级别的信息进行显示,

Low

Medium

High

个选择项可以选择,很类似于

Log4J

的级别设置啦。

 

比如:

 

 

你选择了

High

选择项,那么只有是

High

级别的提示信息才会被显示。

 

 

你选择了

Medium

选择项,

那么只有是

Medium

High

级别的提示信息才会

被显示。

 

 

你选择了

Low

选择项,那么所有级别的提示信息都会被显示。

 

Enable bug categories

选择项

 

 

在这里是一些显示

Bug

分类的选择:

 

 

Correctness

关于代码正确性相关方面的

 

 

Performance

关于代码性能相关方面的

 

 

Internationalization

关于代码国际化相关方面的

 

 

Multithreaded correctness

关于代码多线程正确性相关方面的

 

Style

关于代码样式相关方面的

 

Malicious code vulnerability

关于恶意破坏代码相关方面的

 

 

比如:如果你把

Style

的检查框去掉不选择中它,那么与

Style

分类相关的警

告信息就不会显示了。其它的类似。

 

Select bug patterns to check for

选择项

 

 

在这里你可以选择所要进行检查的相关的

Bug Pattern

条目

 

 

可以从

Bug codes

Detector name

Detector description

中看到相应的

是要检查哪些方面的内容,你可以根据需要选择或去掉相应的

 

检查条件。

 

 

 

 

总结

 

 

 

 

此插件的功能很不错,可以帮助我们提升

Java

代码的编写能力,

写出更加

安全可靠的代码。建议使用或加在

Ant

里进行持续构建。

 

 

 

 

现在,你可以马上拿出你已经开发的一个项目,检查一下你的代码有没有

问题了



部成员的共享命名用,省得移动后要改动

Link

文件里的绝对路径而费心费力。

直接拷贝过去就可以使用。

 

 

XYZ.link

文件的内容如是:

path=../PlugInsNew/XYZ 

 

这样,如果你下载了多个插件就可以如法炮制建立多个

Link

文件,想加载哪个

插件就把哪个插件的

Link

文件放到

%ECLIPSE_HOME%\links

的目录中即

可,使用与管理都很方便,建议千万不要放在默认的安装目录中;

 

 

如果你的

%ECLIPSE_HOME%

与此不同,请修改

XYZ.link

文件里的路径

 

删除,关闭

Eclipse 

 

删除

%ECLIPSE_HOME%\links\XYZ.link

文件即可

 

 

删除

%ECLIPSE_HOME%\PlugInsNew\XYZ

整个目录及文件

 

重新启动

Eclipse

即可

 

 

 

 

使用

 

 

 

重新启动

Eclipse

后,在

Help => About Eclipse SDK => Plug-in 

Details

你可以看到由

“FindBugs Project”

提供的

“FindBugs Plug

-

in”

版本

0.0.17

插件,如下图所示:

 

 

 

 

 

 

FindBugs

的使用方法

 

 

 

FindBugs

是一个可以在

Java

程序中发现

Bugs

的程序。

 

 

 

 

它是专门用来寻找处于

“Bug Patterns”

列表中的代码的。

 

 

 

 

Bug Patterns

指很有可能是错误的代码的实例。

 

 

 

目前

FindBugs

最高版本

0.9.4

不过更新速度很快的,

你应当经常上去看

看是否有新版本发布。

Eclipse plugin for FindBugs

最高版本

0.0.17

 

 

 

系统要求

 

 

 

使用

FindBugs

至少需要

JDK1.4.0

以上版本,

FindBugs

是平台独立的,

可以运行于

GNU/Linux

Windows

MacOS X

 

等平台上。

 

 

 

运行

FindBugs

至少需要有

256 MB

内存,

如果你要分析一个很大的项目,

那就需要更加多的内存了。

 

 

 

FindBugs

独立运行和与

Ant

结合的详细操作就不介绍了,可以看官方的

文档

http://findbugs.sourceforge.net/manual/ 

 

 

独立运行的效果图如下:

 

 

 

 

 

 

本文主要介绍在

Eclipse

中使用的情况

 

 

 

打开

Bug Details

视图

 

 

 

Windows => Show View => Other… => FindBugs => BugDetails

 

 

 

 

 

 

Package Explorer

Navigator

视图中,

选中你的

Java

项目,

右键,

可以看到

“Find Bugs”

菜单项,子菜单项里有

“Find Bugs”

“Clear Bug 

Markers”

两项内容,如下图所示:

 

 

 

 

 

 

我们建立一个简单的测试文件

Test.java 

内容如下:

 

 

public class Test { private String[] name; public String[] getName() 

{ return name; } public void setName(String[] name) 

{ this.name[http://this.name] = name; } } 

 

 

 

我们点中

“Find Bugs”

,运行时会出现如下进度框:

 

 

 

运行结束后可以在

Problems

中看到增加了如下的警告信息内容

 

 

 

FindBugs

运行后的警告信息内容不仅在

Problems

视图中显示,而且将

标记在源代码标记框中,在源代码编辑器中我们可以看到警告标识,如下图:

 

 

 

 

当光标指向你的警告信息的代码上面时,就会有相应的错误提示信息,与

Eclipse

本身的错误或警告信息提示类似。

 

 

 

 

选中

Problems

视图里出现的相应问题,就会在代码编辑器里切换到相应

的代码上去,方便根据相应的提示信息进行代码的修改。

 

 

 

 

 

 

 

Problems

视图里,选中相应的问题条目,右键,在弹出的菜单中,可

以看到

“Show Bug Details”

,如下图所示:

 

 

 

 

 

 

点中它,会切换到

Bug Details

视图上去,显示更加详细的提示信息。

 

 

 

当然,在代码编辑窗口中,点击带有警告提示信息的图标时,也会自动切

换到

Bud Details

窗口去,查看详细的警告信息,如下图所示。

 

 

 

 

 

 

根据这里详细的信息,你可以得到

FindBugs

为什么会对你的代码报警告

信息,及相应的处理办法,根据它的提示,你可以快速方便地进行代码修改。

 

 

 

 

 

 

根据提示,我们将代码修改成如下,再运行就不会报有警告信息了。

 

public class Test { private String[] name; public String[] getName() 

{ String[] temp = name; return temp; } public void setName(String[] 

name) { String[] temp = name; this.name[http://this.name] = 

temp; } } 

 

 

 

配置

FindBugs 

 

 

选择你的项目,右键

 

=> Properties => FindBugs => 

 

 

 

 

 

可以配置的信息包括如上图所示的四个选项的相关设置:

 

Run FindBugs Automatically

开关

 

 

当此项选中后,

FindBugs

将会在你修改

Java

类时自动运行,如你设置了

Eclipse

自动编译开关后,当你修改完

Java

文件保存,

FindBugs

就会运行,

并将相应的信息显示出来。

 

 

当此项没有选中,你只能每次在需要的时候自己去运行

FindBugs

来检查你的

代码。

 

 

Minimum priority to report

选择项

 

 

这个选择项是让你选择哪个级别的信息进行显示,

Low

Medium

High

个选择项可以选择,很类似于

Log4J

的级别设置啦。

 

比如:

 

 

你选择了

High

选择项,那么只有是

High

级别的提示信息才会被显示。

 

 

你选择了

Medium

选择项,

那么只有是

Medium

High

级别的提示信息才会

被显示。

 

 

你选择了

Low

选择项,那么所有级别的提示信息都会被显示。

 

Enable bug categories

选择项

 

 

在这里是一些显示

Bug

分类的选择:

 

 

Correctness

关于代码正确性相关方面的

 

 

Performance

关于代码性能相关方面的

 

 

Internationalization

关于代码国际化相关方面的

 

 

Multithreaded correctness

关于代码多线程正确性相关方面的

 

Style

关于代码样式相关方面的

 

Malicious code vulnerability

关于恶意破坏代码相关方面的

 

 

比如:如果你把

Style

的检查框去掉不选择中它,那么与

Style

分类相关的警

告信息就不会显示了。其它的类似。

 

Select bug patterns to check for

选择项

 

 

在这里你可以选择所要进行检查的相关的

Bug Pattern

条目

 

 

可以从

Bug codes

Detector name

Detector description

中看到相应的

是要检查哪些方面的内容,你可以根据需要选择或去掉相应的

 

检查条件。

 

 

 

 

总结

 

 

 

 

此插件的功能很不错,可以帮助我们提升

Java

代码的编写能力,

写出更加

安全可靠的代码。建议使用或加在

Ant

里进行持续构建。

 

 

 

 

现在,你可以马上拿出你已经开发的一个项目,检查一下你的代码有没有

问题了


原创粉丝点击