hyddd
原创,转载请说明
!
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
FindBugs
是一个专门分析
JAVA
代码问题的静态代码扫描工具,它是由一位马里兰大学的博士写的,官方网站是:
http://findbugs.sourceforge.net/index.html
,里面有
FindBugs
工具的下载,并且也包含了那位博士写的关于静态代码分析引擎的一些论文,不过偶还没看。
FindBugs
可以发现的问题包括:多线程竞争问题,性能问题,安全问题,代码规范
......
这些下面我都会详细介绍
:>
,如果想了解更多关于其他语言的静态代码扫描工具信息,可以参考《
[hyddd安全性测试笔记2]浅淡静态代码分析工具
》。
一
.FindBugs
的使用
先说说
FindBugs
的使用,
FindBugs
它提供两种工具形式,一种是界面形式的工具,如下图:
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
![](https://i-blog.csdnimg.cn/blog_migrate/b8583ccb6bce0d223dee5635df6ece07.jpeg)
另外一种是以
Eclipse
插件的形式提供的:
![](https://i-blog.csdnimg.cn/blog_migrate/ac8b990c1ca9dcc98e8b031db2e86d76.jpeg)
个人比较喜欢插件的形式,方便~!
下面简单介绍
FindBugs
插件的使用:
1.
右键项目
Pop Menu
-
>Find Bugs
-
>Find Bugs
,如图:
![](https://i-blog.csdnimg.cn/blog_migrate/5c38de84c839174003262215ab03eea2.jpeg)
2.
把
FindBugs
插件的
3
个功能
WorkSpace
导出,如图:
![](https://i-blog.csdnimg.cn/blog_migrate/9e51a4e22dabb626f9794a63d9ec3f3e.jpeg)
(1). Bug Explorer
:这里显示的是用
FindBugs
对这个项目扫描的结果。现在只扫出了一个类型的
BUG
,同时这个类型的
BUG
数量为
1(
见图中括号
)
。继续打开
[DLS]Dead store to local variable
,选择其中一项,右键单击,选择
Pop Menu
中的
“Show Bug Details”
,我们便会跳转到
Bug Details
这个
WorkSpace
。
![](https://i-blog.csdnimg.cn/blog_migrate/4b74159e8c778be5cdce6139ef3b77fc.jpeg)
(2).Bug Details
:这里是对
BUG
问题的描述,包括:
Bug
类别及程度,
Bug
的定位,对
Bug
的解释。
![](https://i-blog.csdnimg.cn/blog_migrate/623f5a79eb979cf2d25cf35c7661c986.jpeg)
这里这个
Bug
类别是
Dodgy
,程度是中等;双击下面会自动定位
BUG
的位置;最下面是这个
BUG
的解释,可以根据里面的提示去修改代码
:>
(3).Bug User Annotations
:记录一些自己添加的评注。
二
.FindBugs
的
Bug
类型及实例代码:
FindBugs
对
BUG
的解释在官网有详细的说明:
http://findbugs.sourceforge.net/bugDescriptions.html#IS2_INCONSISTENT_SYNC
。虽然有说明,但说明一般比较简短,而且没有
Demo
代码,有时候还真没明白它说什么意思
:<
,所以在这里我打算整理一下之前看过的资料,把问题和解决方案记录下来:
Bad practice
:
[Hight]
[Medium]
Correctness
:
[Hight]
[Medium]
Experimental
:
[Medium]
Internationalization
:
......
Malicious code vulnerability
:
[Medium]
Multithreaded correctness
:
[Medium]
Performance
:
[Medium]
Security
:
[Medium]
[M S XSS] Servlet reflected cross site scripting vulnerability
Dodgy
:
[Medium]
[M D ICAST] Result of integer multiplication cast to long
.......
-----------------------------------------------------------------
三
.
参考文档
1.http://blog.csdn.net/axzywan/archive/2008/11/16/3312009.aspx
2.http://www.cnitblog.com/weitom1982/archive/2006/03/31/8367.html
3.http://www.ibm.com/developerworks/cn/java/j-jtp06294/
4.http://leewinq.javaeye.com/blog/283813
转载于:https://blog.51cto.com/stantic/402700