findbug 常见异常处理

时间:2021-09-07 11:49:44
【文件属性】:
文件名称: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 描述:私有方法没有被调用; 处理方式:考虑将其注释掉;

网友评论