静态代码分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
静态代码分析
一、什么是静态代码分析
静态代码分析是指无需运行被测代码,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性,找出代码隐藏的错误和缺陷,如参数不匹配,有歧义的嵌套语句,错误的递归,非法计算,可能出现的空指针引用等等。
在软件开发过程中,静态代码分析往往先于动态测试之前进行,同时也可以作为制定动态测试用例的参考。统计证明,在整个软件开发生命周期中,30% 至70% 的代码逻辑设计和编码缺陷是可以通过静态代码分析来发现和修复的。但是,由于静态代码分析往往要求大量的时间消耗和相关知识的积累,因此对于软件开发团队来说,使用静态代码分析工具自动化执行代码检查和分析,能够极大地提高软件可靠性并节省软件开发和测试成本。
静态代码分析工具的优势
1. 帮助程序开发人员自动执行静态代码分析,快速定位代码隐藏错误和缺陷。
2. 帮助代码设计人员更专注于分析和解决代码设计缺陷。
3. 显著减少在代码逐行检查上花费的时间,提高软件可靠性并节省软件开发和测试成本。
二、主流Java静态分析工具
Findbugs、checkstyle和PMD都可以作为插件插入eclipse,当然也有单独的工具可以实现他们的功能,比如Findbugs Tool就可以不必插入eclipse就可以使用。
CheckStyle
检查源文件主要关注格式检查Java源文件是否与代码
规范相符
主要包括:
Javadoc注释
命名规范
多余没用的Imports
Size度量,如过长的方法
缺少必要的空格Whitespace
重复代码
三者作为开源的软件,不用考虑版权问题。他们的源代码保存在/上,下载也可以去这里下载。
三、Findbugs、checkstyle、PMD的安装
1. 下载插件
因为Findbugs、checkstyle、PMD都在/这个开源的网站上进行管理,所以直接去该网站下载。
工具下载地址截图注意事项
Findbugs http://source
/proj
ects/findbugs
/files/findbug
s%20eclipse%
20plugin/
下载的时候要
注意红框里一
定是findbugs
eclipse plugin,
有可能你在这
个网站上下载
到Findbugs,但
他不能用做
eclipse插件使
用。
Checksty le http://source
/proj
ects/eclipse-c
s/files/?sourc
e=navbar
你可能在
sourceforge上
到checkstyle,
但下载下来同
样不能用做
eclpse插件使
用,注意要下载
eclipse
checkstyle
plug-in。
PMD http://sourcef
/proj
ects/pmd/file
s/pmd-eclipse
/update-site-l
atest/
我没有找到可
以一下plugins
和features的文
件都下载下来,
只能一个一个
的下载,然后重
新创建了
features和
plugins文件夹,
然后把东西放
里面。也许有更
好的方法吧。同
样注意下载的
是pmd-eclipse
目录下的文件
2. 安装eclipse插件
目前来说有三种安装eclipse插件的方式:
(1)在线安装方式:使用Eclipse的菜单栏Help -> SoftwareUpdates -> Find and install... -> search for new features... ->输入软件安装地址进行安装
(2)离线安装方式一:下载插件文件,将其解压缩到Eclipse对应的目录中,即eclipse 目录下对应的features下和plugins下。
(3)离线安装方式二:links文件方式。
例如eclipse的安装目录是C:\soft\Eclipse3.3。
把插件放在C:\eclipsePlugins\CheckStyle下(文件夹名随意),如下图
编写link文件放在eclipse安装目录下的links文件夹内,如下图
3. 注意事项
Checkstyle如果使用eclipse插件版本,需要注意eclipse内核版本和jdk版本。
最新6.x版本需要jdk1.7,常见的eclipse3.3,MyEclipse8.6最好用4.x,5.x 版本,具体以能否安装上为准。
四、Findbugs
1. 简介
/
FindBugs 是一个静态分析工具,它检查类或者JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题。有了静态分析工具,就可以在不实际运行程序的情况对软件进行分析。
在FindBugs的GUI中,需要先选择待扫描的.class文件(FindBugs其实就是对编译后的class进行扫描,藉以发现一些隐藏的bug。)。如果你拥有这些.class档对应的源文件,可把这些.java文件再选上,这样便可以从稍后得出的报告中快捷的定位到出问题的代码上面。此外,还可以选上工程所使用的library,这样似乎可以帮助FindBugs做一些高阶的检查,藉以发现一些更深层的bug。
选定了以上各项后,便可以开始检测了。检测的过程可能会花好几分钟,具体视工程的规模而定。检测完毕可生成一份详细的报告,藉由这份报告,可以发现许多代码中间潜在的bug。比较典型的,如引用了空指针(null pointer dereference), 特定的资源(db connection)未关闭,等等。如果用人工检查的方式,这些bug可能很难才会被发现,或许永远也无法发现,