FindBugs使用
来源:互联网 发布:nginx 访问不同目录 编辑:程序博客网 时间:2024/06/08 11:46
FindBugs简介
FindBugs是一款静态分析工具,使用它可以查出代码编写过程中一些不规范和错误的地方。
下载地址
点击打开链接
安装步骤
1、解压压缩包
2、将解压出的文件findbugs-3.0.1拷贝到Eclipse安装目录plugins文件夹下
3、重启Eclipse工具,FindBugs生效
4、检查FindBugs是否安装成功,以下两种方法皆可检验
(1)在Eclipse中,Window-->Preferences 搜索FindBugs 若出现搜索结果则表明安装成功
(2) 在项目中右键出现FindBugs选项也表示安装成功
使用方法
1、右键项目,选择FindBugs
2、根据提示解决相应问题
错误代码
以下是FindBugs一些常见的错误代码对应解释及将解决办法,可以参考
序号
问题英文描述
问题分析
解决办法
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
未被使用的变量或对象
请查看代码,如果没有引用,请删除或者注释掉
- FindBugs使用
- FindBugs使用
- findbugs使用
- FindBugs使用
- FindBugs使用
- Findbugs安装使用文档
- FindBugs安装和使用
- FindBugs 安装使用
- FindBugs 安装使用
- findbugs的使用
- Findbugs安装使用文档
- Findbugs安装使用文档
- Findbugs Maven插件使用
- FindBugs的使用
- FindBugs的使用
- FindBugs 的使用
- eclipse FindBugs 安装使用
- Findbugs安装,使用文档
- Spring Cache 介绍
- 关于mysql存储过程的一些心得
- ShiftyTextview(数字会滚动的TextView)(仿支付宝余额显示,膜拜单车骑行数据显示)
- 静态化缓存-access_token
- POJ1985 Cow Marathon
- FindBugs使用
- java使用poi导出excel的内容,同时可以利用反射进行动态获取信息
- 3.3 索引与切片
- Exchanger 线程之间数据传输
- 数据库的设计
- Android7.0 & 8.0 Language Settings 定制
- 博弈论学习笔记
- C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files没有权限--完美解决
- SPOJ DQUERYD-query(离线线段树,查区间不同数字个数)