开源工具Findbugs使用总结

一、代码检查法概念

白盒测试分为静态测试和动态测试。

代码检查法是静态测试的一种,主要是由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行。

代码检查包括代码走查、桌面检查、代码审查等,主要检查代码和设计的一致性,代码对标准的遵循、可读性,代码的逻辑表达的正确性,代码结构的合理性等方面;可以发现违背程序编写标准的问题,程序中不安全、不明确和模糊的部分,找出程序中不可移植部分、违背程序编程风格的问题,包括变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构检查等内容。

二、Findbugs工具介绍

静态分析工具有很多,其中商业工具比较有名的有Klocwork,coverity,pc-lint,开源的有splint,Findbugs等。

以下主要介绍一下Findbugs工具。

Findbugs是一款Java静态代码分析工具,与其他静态分析工具(如Checkstyle和PMD)不同,Findbugs 不注重样式或者格式,它专注于寻找真正的缺陷或者潜在的性能问题,它可以帮助java工程师提高代码质量以及排除隐含的缺陷。有了静态分析工具,就可以在不实际运行程序的情况对软件进行分析。

Findbugs运用Apache BCEL 库分析类文件(class文件)而不是源代码,将字节码与一组缺陷模式进行对比以发现可能的问题。Findbugs的检测器已增至300多条,被分为不同的类型,常见的类型如下:

· 正确性(Correctness):这种归类下的问题在某种情况下会导致bug,比如错误的强制类型转换等。

· 最佳实践反例(Bad practice):这种类别下的代码违反了公认的最佳实践标准,比如某个类实现了equals方法但未实现hashCode方法等。

· 多线程正确性(Multithreaded correctness):关注于同步和多线程问题。

· 性能(Performance):潜在的性能问题。

· 安全(Security):安全相关。

· 高危(Dodgy):Findbugs团队认为该类型下的问题代码导致bug的可能性很高。

三、Findbugs安装及使用

Findbugs可以通过三种方法使用,可以通过Ant工具,通过Ant提供的Swing操作界面和作为Eclipse的一个插件来使用。下面介绍第三种。

下载地址:http://Findbugs.sourceforge.net/downloads.html

需要注意的是eclipse的版本问题,目前最新的Findbugs版本为2.0.3.20131118,支持eclipse 版本3.6及以上。

此处我使用的eclipse版本 3.3.2,使用的Findbugs的版本为1.3.9.20090821。

下载完成后,在Eclipse中安装Findbugs插件

1.  安装Findbugs

解压zip文件,将解压后的文件放到Eclipse的Plugin中。重新启动Eclipse 。(使用MyEclipse的话,放在/dropins文件夹下)

2.  打开Findbugs视图

技术分享

 

技术分享

技术分享

3.  执行Find Bug 任务

右键单击你要检测的工程、包或文件,-->Find Bugs-->Find Bugs。

技术分享

4.  查看具体错误信息

选中一条问题,点击右键-->Properties。

技术分享

双击问题,可以定位到具体代码行。

四、设置Findbugs属性

技术分享

技术分享

1.  Minimum priority to report选择项

选择哪个级别的信息进行显示,有Low、Medium、High三个选择项。

1)     High选择项是High级别的提示信息才会被显示。

2)     Medium选择项是Medium和High级别的提示信息才会被显示。

3)     Low选择项是所有级别的提示信息都会被显示。

技术分享

2.  Report bug categories选择项

在这里是一些显示Bug分类的选择:

Malicious code vulnerability关于恶意破坏代码相关方面的

Correctness关于代码正确性相关方面的

Internationalization关于代码国际化相关方面的

Performance关于代码性能相关方面的

Multithreaded correctness关于代码多线程正确性相关方面的

3.  Run Automatically开关

当此项选中后,Findbugs将会在你修改Java类时自动运行,如你设置了Eclipse自动编译开关后,当你修改完Java文件保存,Findbugs就会运行,并将相应的信息显示出来。

当此项没有选中,你只能每次在需要的时候自己去运行Findbugs来检查你的代码。

4.  Detector Configuration选择项

在这里你可以选择所要进行检查的相关的Bug Pattern条目,你可以根据需要选择或去掉相应的检查条件。

五、其它分析工具

除FingBugs静态分析工具外,还有PMD和Checkstyle,FingBugs、PMD和Checkstyle三个工具各有不同的特点,联合使用有助于减少误报错误,提高报告的准确率。

技术分享

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。