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 对 象 是 线 程 不 安 全 的 , 建 议 不 要 使 用 静 态 的
评论3