文档章节

Eclipse 插件 FindBugs安装和使用

开源中国首席灵魂师
 开源中国首席灵魂师
发布于 2016/06/30 15:38
字数 1518
阅读 75
收藏 1

FindBugs 是由马里兰大学提供的一款开源 Java静态代码分析工具。FindBugs通过检查类文件或 JAR文件,将字节码与一组缺陷模式进行对比从而发现代码缺陷,完成静态代码分析。FindBugs既提供可视化 UI 界面,同时也可以作为 Eclipse插件使用。文本将主要使用将 FindBugs作为 Eclipse插件。在安装成功后会在 eclipse中增加 FindBugs perspective,用户可以对指定 Java类或 JAR文件运行 FindBugs,此时 FindBugs会遍历指定文件,进行静态代码分析。

一:如何安装

安装步骤:

1.点击“Help->InstallNew Software”,如下图:

 

2.点击“Add”,然后在弹出框“Name”输入“findBugs”,“Location”输入“http://findbugs.cs.umd.edu/eclipse”,点击“OK”,如下图:

3.选择对应插件,然后点击“next->next->finish”。

 

4.完成安装之后重启eclipse,右击项目文件或目录,会发现多了Findbugs的菜单,如下图:

 

当然也可以直接从http://download.csdn.net/detail/hailshao/6593725下载,然后将文件复制到你本地eclipse的plugins目录,然后重启eclipse即可

二:如何使用

1,  在eclipse package Explorer 右键选择目标工程-> build project

 2,  选择指定的包或者类进行findbug

3,添加findbugs explorer (eclipse 左下角)

4,  bugs explorer 添加完毕后,我们就可以查看刚刚找到的bugs了

技巧使用:

找出的bug有3中颜色, 黑色的臭虫标志是分类, 红色的臭虫表示严重bug发现后必须修改代码,橘黄色的臭虫表示潜在警告性bug 尽量修改。(附录是各种bug的解释及修改方案,请大家按附表参考修改)

双击bug项目就可以在右边编辑窗口自动打开相关代码文件并连接到代码片段。 点击行号旁边的小臭虫图标后再eclipse下方输出区将提供详细的bug描述,以及修改建议等信息。我们可以根据此信息进行修改。

 

附录:

 

代码检查常见问题及解决方法

注:以下解决方法为参考办法,如果有更好的解决办法欢迎提出,我们共同改进。

序号

问题英文描述

问题分析

解决办法

1

Comparison of String objects using == or !=

比较字符串使用了双等号

使用String的equels()方法

2

Call to equals() comparing different types

Equals方法比较了两个不同的数据类型

转换类型后比较

3

Call to method of static java.text.DateFormat

同一个format 多次调用会导致线性不安全, private static final SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");  

方法体内调用:

format.format(new Date());  

在方法体内使用,尽量避免定义全局的对象
方法体内定义:SimpleDateFormat  format = new SimpleDateFormat("dd/MM/yyyy");  

format.format(new Date());  

4

Bad attempt to compute absolute value of signed 32-bit random integer

String nums = Math.abs(r.nextInt()) + "";

修改为String nums = Math.abs(r.nextInt(Integer.MAX_VALUE)) + "";

5

The class name com.aisino.fpcxbd.action.printAction doesn't start with an upper case letter

类名首字母大写

类名首字母大写

6

Dead store to rePacket

不被使用的变量或常量

看业务是否会使用,如果不使用,请删除,如果有使用,初始值不要直接new 一个对象,初始值可以置为null

7

Exception is caught when Exception is not thrown

没有抛出异常时,异常被捕获

 

结合业务进行处理

8

Load of known null value

填充了空值

如果没有的空值,请删除

9

Method invokes inefficient new String(String) constructor

方法中调用了低效的new String()构造方法,如

context.put("name",new String("Velocity") );

如果内容本身为字符串,则直接赋值即可,如

context.put("name","Velocity" );

10

Method may fail to close stream

方法可能未关闭stream,方法产生了一个IO流,却未关闭,将会导致文件描绘符的泄漏。

建议使用finally block来确保io stream被关闭。如果无异常,请使用完毕后关闭IO流。

11

Method might ignore exception

捕捉了异常,但是没有进行处理

需要在catch体中对异常进行处理。或者打印相关的描述。

12

Method names should start with a lower case letter

方法首字母没有小写, 没有遵循Java命名规范

请将方法首字母小写

13

Method uses the same code for two branches

例如:

fpkjmx.setSyl(fpkjmx.getSyl());

请确认该写法是否有意义。

14

Non-transient non-serializable instance field in serializable class

在可序列化的类中存在不能序列化或者不能暂存的数据

 

将属性对象实现可实例化

15

Null pointer dereference

会出现空指针,如

if(null != nsrxx){ }else{ nsrxx.setLoginZt(3);

}

这种逻辑有明显的错误,请根据业务修改

16

Nullcheck of value previously dereferenced

会出现空指针异常

先做非空判断,再进行业务逻辑的处理,避免空指针异常

17

Possible null pointer dereference

可能会出现空指针异常

请根据业务处理,如有必要先做非空判断

18

Possible null pointer dereference in method on exception path

在异常部分放弃null值检查,可能会导致后面的代码出现空指针异常

请根据业务进行处理

19

Redundant nullcheck of value known to be non-null

该对象已不为空,没有必要再做非空判断

没有必要的判断去掉即可,(根据实际业务)

20

Redundant nullcheck of value known to be non-null

已知该对象为空,没有必要再做非空判断

已知该对象为空,没有必要再做非空判断

21

Repeated conditional tests

重复条件测试

重复的判断,请去掉一个

22

Self assignment of local variable

自赋值的局部变量

请检查代码,是否可以去掉自赋值

23

Should be a static inner class

应该定义为静态内部类

如果出现该提示,请定义为静态内部类

24

Store of non serializable object into HttpSession

在HttpSession中存放非序列化的对象

 

将Javabean实现可实例化

25

Unread field

未被使用的变量或对象

请查看代码,如果没有引用,请删除或者注释掉

 

 

© 著作权归作者所有

共有 人打赏支持
开源中国首席灵魂师
粉丝 18
博文 44
码字总数 41547
作品 0
徐汇
程序员
私信 提问
在Eclipse或MyEclipse中安装findbugs插件

在Eclipse或MyEclipse中安装findbugs插件 我们都知道,在Eclipse或MyEclipse(我用的8.0)中安装插件有两种方式,一种是在线安装,第二种是先下载插件然后在本地安装。 在这里我们先介绍第一种...

满风
2012/08/27
0
0
通过 Findbugs 找出程序中隐藏的 bug

我们通常依赖单元测试工具Luntbuild,来发现代码中有许多隐藏的错误或不良的编码,然后再去修正。这样从发现问题,到解决问题花费很多功 夫。其实 我们可以利用一些java代码分析工具,来及时...

红薯
2010/04/15
2.1K
3
Eclipse-Java代码规范和质量检查插件-FindBugs

FindBugs 是由马里兰大学提供的一款开源 Java静态代码分析工具。FindBugs通过检查类文件或 JAR文件,将字节码与一组缺陷模式进行对比从而发现代码缺陷,完成静态代码分析。FindBugs既提供可视...

easonjim
2017/10/18
0
0
Eclipse luna 4.4 安装findbugs重启后找不到相关的菜单

我一开始是在Groovy/Grails Tool Suite上安装的findbugs最新版Eclipse插件,该插件支持Eclipse 4.4的。 重启后找不到相关的菜单重启后也是找不到相关的菜单。又在Eclipse luna 4.4 安装findb...

caoxie
2014/10/17
1K
1
eclipse/myeclipse配置*

一、保存自己的工作窗口,在窗口的基础上新增自己需要的窗口,一般console/svn等窗口。 二、将eclipse所有的编码格式都设置为utf-8 如何为eclipse设置编码格式 三、配置查看文件所在的文件夹 ...

cjun1990
2014/11/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

JavaEE开发的颠覆者SpringBoot实战摘要笔记

一、注解理解 1.spring注解 1)@Configuration/@ComponentScan/@Bean注解实现java方式的配置。 @Configuration代替xml文件 @ComponentScan指定扫描范围 @Bean代替bean标签 2)@Bean、@Componen...

啃不动地大坚果
24分钟前
2
0
跨链技术的分析和思考

当前的区块链底层技术平台百花齐放,不同的业务、不同的技术底层的区块链之间缺乏统一的互联互通的机制,这极大限制了区块链技术和应用生态的健康发展。跨链的需求由此而来,本文通过分析几种...

Tiny熊
26分钟前
0
0
使用css预处理器sass轻松生成margin、padding四个方向多个值的css样式代码

直接在scss文件上复制这段scss代码: $directions:("t":"top", "b":"bottom", "l":"left", "r":"right");$dimensions:("p":"padding", "m":"margin");//获取padding margin间隔@each $......

祖达
44分钟前
0
0
gearman安装,提示错误:configure: error: could not find boost

背景及最终解决方案 在CentOS 7上安装gearman时,提示错误:configure: error: could not find boost,最终解决方案是: 先安装: # yum install -y boost boost-devel 发现问题还是没解决,...

暗夜在火星
50分钟前
2
0
NFS服务

问题1: A机器上传了一张图片,结果B机器访问的时候就提示404. NFS,Network File System。网络文件系统,即通过网络,对在不同主机上的文件进行共享。 NFS最早由Sun公司开发,分2,3,4三个...

wzb88
51分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部