美文网首页
静态代码分析工具对比

静态代码分析工具对比

作者: 独步_fe43 | 来源:发表于2019-08-20 20:41 被阅读0次

    静态代码分析工具

    一、         什么是静态代码分析工具

    二、         Findbugs

    三、         Checkstyle

    四、         Pmd

    五、         FindBugsPMDCheckStyle对比

    六、         Sonar

    七、         Infer

    一、 什么是静态代码分析工具

    静态程序分析是指使用自动化工具软件对程序源代码进行检查,以分析程序行为的技术,应用于程序的正确性检查、安全缺陷检测、程序优化等。它的特点就是不执行程序,相反,通过在真实或模拟环境中执行程序进行分析的方法称为“动态程序分析

    二、  Findbugs

    1.findbug介绍

    FindBugs 是一个静态分析工具,它检查类或者JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题。它可以简单高效全面地帮助我们发现程序代码中存在的bug,以及潜在隐患。针对各种问题,它并且提供了简单的修改意见供我们重构时进行参考;通过使用它,可以一定程度上降低我们code review的工作量,并且会提高review效率。通过findbugs找到bug,再由我们自己重构代码,可以培养我们的编码意识及水平,形成好的习惯提高开发编码能力。

    Findbugs自带检测器,其中有60余种Bad

    practice,80余种Correctness,1种 Internationalization,12种Malicious code vulnerability,27种Multithreaded correctness,23种Performance,43种Dodgy。

    2.使用

    在eclipse上安装findbugs插件,直接在eclipse上分析代码

    与maven、gradle、ant、jenkins等结合使用

    三、  Checkstyle

    Checkstyle 是 SourceForge 的开源项目,通过检查对代码编码格式,命名约定,Javadoc,类设计等方面进行代码规范和风格的检查,从而有效约束开发人员更好地遵循代码编写规范。(检查代码风格:变量的命名规范,注释规范,空格规范)

    四、  Pmd

    PMD是一种开源分析Java代码错误的工具。与其他分析工具不同的是,PMD通过静态分析获知代码错误。也就是说,在不运行Java程序的情况下报告错误。(主要检查重复代码,比如直接copy的那些代码段)

    五、    FindBugsPMDCheckStyle对比

    工具目的检查项

    FindBugs

    检查.class

    基于Bug Patterns概念,查找javabytecode(.class文件)中的潜在bug主要检查bytecode中的bug patterns,如空指针检查、没有合理关闭资源、字符串相同判断错(==,而不是equals)等

    PMD

    检查源文件

    检查Java源文件中的潜在问题主要包括:

    空try/catch/finally/switch语句块

    未使用的局部变量、参数和private方法

    空if/while语句

    过于复杂的表达式,如不必要的if语句等

    复杂类

    重复代码

    CheckStyle

    检查源文件

    主要关注格式

    检查Java源文件是否与代码规范相符主要包括:

    Javadoc注释

    命名规范

    代码风格

    多余没用的Imports

    Size度量,如过长的方法

    缺少必要的空格Whitespace

    重复代码

    [if !vml]

    [endif]

    六、 Sonar

    sonar比findbugs高了一个层级,多出了sonar不仅关注了常规静态bug,还关注到了如代码质量、包与包,类与类之间的依赖情况、代码耦合情况、类,方法。文件的复杂度、代码中是否包含大量复制粘贴的代码是质量低下的,关注到了项目代码整体的健康情况。(sonar的规则,50%bug都是主要级别,其实危害不大)

    七、 Infer

    Infer是FaceBook的一个开源的静态程序分析工具,可以分析 Objective-C, Java 或者 C 代码,报告潜在的问题(检查空指针引用,资源泄露(I/O未关闭))

    相关文章

      网友评论

          本文标题:静态代码分析工具对比

          本文链接:https://www.haomeiwen.com/subject/zzumsctx.html