1.   简介

Findbugs 是一个静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题。利用这个工具,就可以在不实际运行程序的情况对软件进行分析。它可以帮助改进代码的质量。

Findbugs提供了方便操作的可视化界面,同时也可以作为Eclipse的一个插件来使用,而我们使用得最多的还是作为Eclipse的插件来使用。

2.   使用方法

Findbugs可以通过三种方法使用,可以通过Ant工具,通过Ant提供的Swing操作界面和作为Eclipse的一个插件来使用。

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

Findbugs介绍及使用方法的更多相关文章

  1. block(代码块)的介绍以及使用方法和变量之间的关系

    http://blog.csdn.net/menxu_work/article/details/8762848 block(代码块)的介绍以及使用方法和变量之间的关系 block(代码块)的介绍以及使 ...

  2. 【转】【Android UI设计与开发】第07期:底部菜单栏(二)Fragment的详细介绍和使用方法

    原始地址:http://blog.csdn.net/yangyu20121224/article/category/1431917/1 由于TabActivity在Android4.0以后已经被完全弃 ...

  3. react-native热更新之CodePush详细介绍及使用方法

    react-native热更新之CodePush详细介绍及使用方法 2018年03月04日 17:03:21 clf_programing 阅读数:7979 标签: react native热更新co ...

  4. DELPHI中枚举类型数据的介绍和使用方法

    在看delphi程序的时候看到aa=(a,b,c,d);这样的东西,还以为是数组,同事说是函数,呵呵,当然这两个都不屑一击,原来这样式子是在声明并付值一个枚举类型的数据.下边写下来DELPHI中枚举类 ...

  5. JQuery onload、ready概念介绍及使用方法

    页面加载完成有两种事件,一是ready,表示文档结构已经加载完成,onload,ready概念容易混淆,下面为大家详细介绍下   页面加载完成有两种事件,一是ready,表示文档结构已经加载完成(不包 ...

  6. CSRF简单介绍及利用方法-跨站请求伪造

    0x00 简要介绍 CSRF(Cross-site request forgery)跨站请求伪造,由于目标站无token/referer限制,导致攻击者可以用户的身份完成操作达到各种目的.根据HTTP ...

  7. C++ stringstream介绍,使用方法与例子

    From: http://www.usidcbbs.com/read-htm-tid-1898.html C++引入了ostringstream.istringstream.stringstream这 ...

  8. ASP中文件上传组件ASPUpload介绍和使用方法

    [导读]要实现该功能,就要利用一些特制的文件上传组件.文件上传组件网页非常多,这里介绍国际上非常有名的ASPUpload组件 1 下载和安装ASPUpload  要实现该功能,就要利用一些特制的文件上 ...

  9. hexo工具介绍及使用方法

    Hexo is a fast, simple & powerful blog framework 安装方法:npm install hexo-cli -g; require:node.js g ...

随机推荐

  1. WINCE 获取智能设备唯一编号

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  2. lvs-keepalived故障记录

    上图中1与2.3不同,可能会导致端口不同,尽量配置1.2.3相同

  3. 自话自说——POI使用需要注意一个地方

    2015.12.1  天气 不怎么好   心情跟天气一样.知道为什么吗,因为昨晚一晚没睡你懂吗... 今天在用POI操作excel的时候,遇到了一个很恶心的地方,这个地方真的有那种让我不相信编程的感觉 ...

  4. 【Visual Lisp】人机交互与数据处理(表除外)-lisp

    ;;本专题所讲述的内容是人机交互以及常规数据处理技术;;★★★01.人机交互★★★;;△△△键盘输入交互△△△(getint "请输入整数");;从键盘输入整数,如果不是整数则重复 ...

  5. Jquery中的checkbox 及radio的问题

    在web开发中,我们经常会对checkbox和radio进行读写操作,下面我来分享一下我的项目中的相关案例: 一.checkbox <input id="check1" cl ...

  6. 【转】【WebDriver】不可编辑域和日历控件域的输入 javascript

    http://blog.csdn.net/fudax/article/details/8089404 今天用到日历控件,用第一个javascript执行后页面上的日期控件后,在html中可以看到生效日 ...

  7. faceBook Pop动画库手动添加版本

    本人将pop的框架直接拖进工程里面然后按照教程导入头文件#import "POP.h"发现报找不到文件的错误,于是我手动将pop库里面所有类似于#import <POP/XX ...

  8. MVC框架三大模块

    1.Routing模块 Routing机制与MVC5的URL解析处理流程基本是相同的,很多的接口和类像IRouteHandler.IHttpHandler.IController .RouteBase ...

  9. Scala.js v0.1 发布,在浏览器直接运行 Scala

    今天我们发布了 Scala.js 的首个版本,这个项目是在今年六月份的时候宣布的. 第一个版本支持的特性: 支持所有 Scala 特性,包括宏,不过有一些 语义上的区别 可非常好的跟 JavaScri ...

  10. [Asp.net 开发系列之SignalR篇]专题三:使用SignalR实现聊天室的功能

    一.引言 在前一篇文章中,我向大家介绍了如何实现实现端对端聊天的功能的,在这一篇文章中将像大家如何使用SignalR实现群聊这样的功能. 二.实现思路 要想实现群聊的功能,首先我们需要创建一个房间,然 ...