首页 / 搞笑 / 正文

findbugs(代码静态检查Findbugs使用说明)

放大字体  缩小字体 来源:英语四级攻略 2026-04-15 13:32  浏览次数:8

随着软件产品的逐渐增多,使用客户越来越多,对产品质量要求也随之提高。因此,希望所有开发人员从细微处着手,对自己书写的代码进行认真仔细地检查;这里 ,推荐一款eclipse插件FindBugs,它的作用是对开发人员书写的代码进行静态检查,在开发环境规避掉因代码书写bug从而造成的生产环境问题。

FindBugs:是一个静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题。有了静态分析工具,就可以在不实际运行程序的情况对软件进行分析。不是通过分析类文件的形式或结构来确定程序的意图,而是通常使用 Visitor 模式来鉴别代码是否符合一些固定的规范。

3 FindBugs安装及使用

3.1.1 插件安装

3.1.2 代码检查

3.2 Jenkins集成

(1) Jenkins安装findbugs插件

选择插件管理

代码静态检查Findbugs使用说明nerror="javascript:errorimg.call(this);">

(2) pom.xml中配置findbugs插件

以下为具体的配置信息。

<groupId>org.codehaus.mojo</groupId>

<version>2.5.2</version>

<findbugsXmlOutput>true</findbugsXmlOutput>

<xmlOutput>true</xmlOutput>

</plugin>

(4) 验证findbugs的安装。

参考资料:https://wiki.jenkins-ci.org/display/JENKINS/FindBugs+Plugin

根据Bug可能导致的后果,FindBugs定义了若干Bug级别,主要的级别如下所示:

Correctness: 正确性

Malicious code vulnerability: 存在漏洞的有害代码

Performance:性能

Dodgy: 欺骗性代码

a) 不需要处理

描述:调用set方法,修改对象属性,被修改的对象属性是一个可变的对象;

描述:调用get方法,获得对象属性,获得的对象属性是一个可变的对象;

Dead store to local variable

处理方式:确认此局部变量是否会被使用,如果确实不会被用到,请去掉;

描述:调用的方法中不会抛出异常,但是调用方法的时候尝试使用try catch捕获异常;

Unread field

处理方式:确认此局部变量是否会被使用,如果确实不会被用到,请去掉,和Dead store to local variable一样处理,只是这里针对的是不是局部变量;

描述:调用静态的DateFormat对象

Class is Serializable, but doesn't define serialVersionUID

处理方式:自动生成serialVersionUID;

描述:Field一直被设置为null;

Usage of GetResource may be unsafe if class is extended

处理方式:

描述:非同步的get方法,同步的set方法

Unconditional wait

处理方式:

描述:switch语句中有case没有使用break;

Should be a static inner class

处理方式: 增加static修饰符使其成为静态内部类;

描述:私有方法没有被调用;

c) 必须处理

描述:对String对象调用toString方法;

Inefficient use of keySet iterator instead of entrySet iterator

处理方式:使用迭代器迭代Collection的时候,优先使用entrySet;

描述:对已知为null的对象进行一些操作,例如

已知ids为空了,但是还调用ids.length属性,应该将&&修改为||;

Method invokes inefficient Number constructor; use static valueOf instead

处理方式:在将一个String对象转化为对应的Number对象的时候,通常会使用new Long(stringObj);实际上使用Long.valueOf(stringObj)会更好;

描述:对已知为null的对象进行一些操作,例如

已知ids为空了,但是还调用ids.length属性,应该将&&修改为||;

Equals method should not assume anything about the type of its argument

处理方式:通常在调用Class.isInstance去判断对象的相等性的时候会出现;

描述:某些字段应该是final的,但是不是;

Write to static field from instance method

处理方式:避免在实例方法中对静态变量做修改;

描述:未被用到的字段;

Nullcheck of value previously dereferenced

处理方式:在这里不需要进行空置检查;

描述:if else 两个分支执行同样的代码;

Method might ignore exception

处理方式:对异常的处理作出检查,这样的情况通常出现在如下代码:

Try{ }catch(Exception r){ }。

打赏
0相关评论
热门搜索排行
精彩图片
友情链接
声明:本站信息均由用户注册后自行发布,本站不承担任何法律责任。如有侵权请告知立立即做删除处理。
违法不良信息举报邮箱:115904045
头条快讯网 版权所有
中国互联网举报中心