【文件属性】:
文件名称:findbug 常见异常处理
文件大小:46KB
文件格式:DOC
更新时间:2021-09-07 11:49:44
findbugs
FindBugs实践
1、 Bug级别
根据Bug可能导致的后果,FindBugs定义了若干Bug级别,主要的级别如下所示:
Bad Practice: 不好的实践
Correctness: 正确性
Experimental Internationalization:
Malicious code vulnerability: 存在漏洞的有害代码
Multithreaded correctness: 多线程正确性
Performance:性能
Security:安全
Dodgy: 欺骗性代码
2、 常见Bug以及处理办法
a) 不需要处理
May expose internal representation by incorporating reference to mutable object
描述:调用set方法,修改对象属性,被修改的对象属性是一个可变的对象;
May expose internal representation by returning reference to mutable object
描述:调用get方法,获得对象属性,获得的对象属性是一个可变的对象;
b) 建议处理
Dead store to local variable
描述:对一个局部变量赋值,但是这个局部变量可能不会被用到;
处理方式:确认此局部变量是否会被使用,如果确实不会被用到,请去掉;
Exception is caught when Exception is not thrown
描述:调用的方法中不会抛出异常,但是调用方法的时候尝试使用try catch 捕获异常;
处理方式:确认此方法的调用会不会导致异常的发生,如果不会抛出异常请去 掉try catch,确认方法调用会不会抛出异常关键是对方法调用参数的合法 性进行检查,排除调用这个方法时可能抛出异常的参数;
Unread field
描述:某个对象的属性不会被读取
处理方式:确认此局部变量是否会被使用,如果确实不会被用到,请去掉,和 Dead store to local variable一样处理,只是这里针对的是不是局部变量;
Call to static DateFormat
描述:调用静态的DateFormat对象
处理方式:DateFormat对象是线程不安全的,建议不要使用静态的DateFormat,但是DateFormat不会被修改的话,也可以不用修改;
Class is Serializable, but doesn't define serialVersionUID
描述:类是可序列化的,但是没有定义serialVersionUID;
处理方式:自动生成serialVersionUID;
Field only ever set to null
描述:Field一直被设置为null;
处理方式:检查相关filed的调用情况,看所有对Field的操作是否都是将Field设置为null;
Usage of GetResource may be unsafe if class is extended
描述:如果一个类被继承了,使用getResource可能会不安全
处理方式:
Unsynchronized get method, synchronized set method
描述:非同步的get方法,同步的set方法
处理方式:修改为一致的情况
Unconditional wait
描述:无条件的wait
处理方式:
Switch statement found where one case falls through to the next case
描述:switch语句中有case没有使用break;
处理方式: 增加break;
Should be a static inner class
描述:应该是静态内部类;
处理方式: 增加static修饰符使其成为静态内部类;
Private method is never called
描述:私有方法没有被调用;
处理方式:考虑将其注释掉;