静态代码检查简介
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Sonarqube简介
Sonarqube是一个用于代码质量管理的开源平台,用于管理源代码的质量。
在我们的Sonarqube服务器系统中,规则分为Findbugs, PMD,Checkstyle, SonarQube, Find Security Bugs, PMD Unit Tests和Common SonarQube,其中各个规则占得比例如下图所示:
其中,Findbugs,PMD和CheckStyle的严重等级的规则大部分可以通过插件的形式集成到eclipse里,占全部规则的73.7%。
其中,eclipse插件中集成的严重等级规则条数及其所占比例如下图所示:
1.Findbugs简介
FindBugs是一个静态代码分析工具,它检查类或者JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题。
有了静态分析工具,就可以在不实际运行程序的情况下,对软件进行分析。
在FindBugs的GUI中,需要先选择待扫描的class文件,FindBugs其实就是对编译后的class进行扫描,藉以发现一些隐藏的bug。
如果你拥有这些class对应的源文件,可把这些java文件再选上,这样便可以从稍后得出的报告中快捷的定位到出问题的代码上面。
此外,还可以选上工程所使用的library,这样似乎可以帮助FindBugs做一些高阶的检查,藉以发现一些更深层的bug。
选定了以上各项后,便可以开始检测了。
检测的过程可能会花好几分钟,具体视工程的规模而定。
检测完毕可生成一份详细的报告,藉由这份报告,可以发现许多代码中间潜在的bug。
比较典型的,如引用了空指针(null pointer dereference), 特定的资源(db connection)未关闭,等等。
如果用人工检查的方式,这些bug可能很难才会被发现,或许永远也无法发现,直到运行时发作。
当除掉了这些典型的(classic) bug后,可以确信的是,我们的系统稳定度将会上一个新的台阶。
2.PMD简介
PMD是一种开源分析Java代码错误的工具。
与其他分析工具不同的是,PMD通过静态分析获知代码错误。
也就是说,在不运行Java程序的情况下报告错误。
PMD附带
了许多可以直接使用的规则,利用这些规则可以找出Java源程序的许多问题。
此外,用户还可以自己定义规则,检查Java代码是否符合某些特定的编码规范。
PMD的核心是JavaCC解析器生成器。
PMD结合运用JavaCC和EBNF(扩展巴科斯-诺尔范式,Extended Backus-Naur Formal)语法,再加上JJTree,把Java源代码解析成抽象语法树(AST,Abstract Syntax Tree)。
PMD是一款采用BSD协议发布的Java程序代码检查工具。
该工具可以做到检查Java 代码中是否含有未使用的变量、是否含有空的抓取块、是否含有不必要的对象等。
该软件功能强大,扫描效率高,是Java程序员debug的好帮手。
3.CheckStyle简介
CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发人员遵守某些编码规范的工具。
它能够自动化代码规范检查过程,从而使得开发人员从这项重要,但是枯燥的任务中解脱出来。
CheckStyle检验的主要内容:Javadoc注释、命名约定、标题、Import语句、体积大小、空白、修饰符、块、代码问题、类设计、混合检查(包括一些有用的比如非必须的System.out和printstackTrace)
从上面可以看出,CheckStyle提供了大部分功能都是对于代码规范的检查,而没有提供像PMD那么多的增强代码质量和修改代码的功能。
但是,对于团队开发,尤其是强调代码规范的公司来说,它的功能已经足够强大。