前言
今天吴兄在群里面提了下findBugs这个插件,可以在项目不运行的情况下,直接对代码进行检查并标出错误点,觉得挺有用的,记录一下。
FindBugs是什么
FindBugs官网地址 :http://findbugs.sourceforge.net/
- FindBugs是一个开源的eclipse 代码检查工具,是一种白盒静态自动化测试工具;
- 它可以简单高效全面地帮助我们发现程序代码中存在的bug,bad smell,以及潜在隐患;
- 针对各种问题,它并且提供了简单的修改意见供我们重构时进行参考;
- 通过使用它,可以一定程度上降低我们code review的工作量,并且会提高review效率;
- 通过FindBugs找到bug,再由我们自己重构代码,可以培养我们的编码意识及水平,形成好的习惯提高开发编码能力。
FindBugs的安装
有两种方式可以安装,直接在线安装和下载安装包
eclipse在线安装
1.点击eclipse Help –> Install New Software – Add
2.添加链接:http://findbugs.cs.umd.edu/eclipse
3.然后一直点击安装就可以了。安装包下载(直接进官网下)
1.解压得到的文件夹,放入eclipse安装目录plugin(插件)文件夹中,重启eclipse!!效果如图:
FindBugs的使用
调出BUG Explorer(显示bug用)
如图:window –> show view –> findbugs
开始使用
1.选择项目–>右键–>bulid project
2.选择一个项目/包/类 –>右键–>Find Bugs。结果如图:
每一个都可以点进去看详情的;
结果分析
错误分析:bId_sql根本赋值失败的,所以检查出来了。应该改成 bId_sql = bId_sql.xxxx;
FindBugs找出的bug有3中颜色:
- 黑色的臭虫标志是分类
- 红色的臭虫表示严重bug发现后必须修改代码
- 橘黄色的臭虫表示潜在警告性bug 尽量修改
每次使用Find Bugs(文件,文件夹上右键–> Find Bugs–>Find Bugs)命令时,如果改动了代码,需要先Build Project;
修改完相关bug之后,在文件上右键-Find Bugs–>Clear Bug Marker清除Find Bugs的标志。
可能出现的错误
An internal error occurred during: “Finding bugs in dynproj…”.
Attempted to beginRule: P/dynproj, does not match outer scope rule: MutexSchedulingRule, resource: P/dynproj
1.新版的FindBugs要求是用JDK 1.7,,具体参考官网解释http://findbugs.sourceforge.net/,如果我们使用的是JDK 1.6的话,可能会遇到以下问题。
2.如果eclipse的版本比较高,FindBugs的版本低于2.0.2话,运行findbugs命令时会出现上面的错误。(我出现的是版本问题,一不小心下了个09年的版本包)
解决办法:换成最新版本的findbugs的就可以了!!!