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

静态代码分析工具对比

作者: 独步_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未关闭))

相关文章

  • 静态代码分析工具对比

    静态代码分析工具 一、 什么是静态代码分析工具 二、 Findbugs 三、 Checkstyle 四、 Pmd ...

  • 静态代码扫描工具

    静态代码扫描工具/引擎对比: 序号引擎分析对象备注1Findbugs字节码缺陷模式匹配、数据流分析。通过字节码分析...

  • Android 静态代码分析工具

    Android 静态代码分析工具 静态代码分析是指无需运行被测代码,仅通过分析或检查源程序的语法、结构、过程、接口...

  • 静态代码分析工具

    PVS-Studio 配置路径 扫描 解决错误

  • Python性能优化Tips

    代码性能分析工具 pylint:不执行代码,静态分析。 profile:执行代码,统计各个函数的调用次数以及耗时。...

  • iOS测试实践

    静态代码分析工具: Clang的Scan-Build工具下载地址 FaceBook的Infer工具下载地址

  • 内存分析(Analyze)

    一. 静态内存分析 所谓静态内存分析, 是指在程序没运行的时候, 通过工具对代码直接进行分析根据代码的上下文的语法...

  • OCLint 代码静态分析

    OCLint 代码静态分析 为了提高代码质量和代码走查的效率,软件开发过程中一般会使用静态代码分析工具来对程序正确...

  • C/C++怎么做好代码静态分析

    代码静态分析 代码静态分析是指在不运行代码的情况下根据代码的静态信息,对代码的各个维度进行分析。 代码静态分析一般...

  • C++小知识:尽可能使用枚举类

    静态代码分析工具可简化编码过程,检测出错误并帮助修复。PVS-Studio 是一个用于 C/C++ 的静态代码分析...

网友评论

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

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