静态代码分析(Static Code Analysis)

静态代码分析简介

程序静态分析(Static Code Analysis)是指在不运行代码的方式下,通过词法分析语法分析控制流分析数据流分析等技术对程序代码进行扫描,验证代码是否满足规范性、安全性、可靠性、可维护性等指标的一种代码分析技术。目前静态分析技术向模拟执行的技术发展以能够发现更多传统意义上动态测试才能发现的缺陷,例如符号执行、抽象解释、值依赖分析等等并采用数学约束求解工具进行路径约减或者可达性分析以减少误报增加效率。目前的静态分析工具,无论从科研角度还是实用性角度还有很大的提高余地,国际最好分析工具误报率在5-10%之间,能够报出的缺陷种类也仅有几百种。
动态分析方法不同的是,静态分析方法不需要执行程序,只需要自动扫描代码,所以,静待代码分析可能会误报程序缺陷。

百度百科

个人理解可将代码省查所做的工作总结为两点

  • 如何定义代码缺陷
  • 如何以静态的方式分析代码的缺陷,根据规则提取缺陷信息

提取缺陷信息方法
词法分析,语法分析,语义分析,控制流分析,数据流分析,污点分析,无效代码分析等。


CppDepend简介

通常,我们都会利用现有的集成工具去分析代码。在此,介绍一款分析C/C++的静态代码分析工具——CppDepend
CppDepend的代码规则为LINQ查询,它可以在数秒内构建一个规则。并且,这些规则包含了技术债务评估
默认的规则集包括了超过100条规则,诸如entangled code,dead-code,API breaking changes和bad OOP usage这样的代码缺陷,都可以通过默认的规则集分析。


CppDepend功能

运行CppDepend,其主界面如下图所示。


CppDepend 主界面

CppDepend主要功能如下:


Next:CppDepend功能详细介绍

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 简介 本文是一个静态代码分析工具的清单,但是为公司产品,需要付费使用。共有37个公司,有些公司包含多个工具。其中2...
    烟花诗人阅读 3,744评论 0 0
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,333评论 25 708
  • Awesome DotNet,这又是一个 Awesome XXX 系列的资源整理,由 quozd 发起和维护。内容...
    小明yz阅读 3,749评论 0 47
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,937评论 18 139
  • 容易大哭或大笑的人,常被认为是不够成熟或是孩子气,但有医生却认为这才是健康之道。当你大笑或大哭结束时,是否都觉得身...
    老陈说健康阅读 1,317评论 0 0