静态代码扫描工具汇总 |
您所在的位置:网站首页 › 代码工具是什么 › 静态代码扫描工具汇总 |
一、概述
在软件开发过程中,开发团队往往要花费大量的时间和精力发现并修改代码缺陷。传统的代码评审、同事复审,通过人工方式来检查缺陷仍然是一件耗时耗力的事情。而静态代码扫描工具能够在代码构建过程中帮助开发人员快速、有效的定位代码缺陷并及时纠正这些潜在的问题。 通过调研,本文将着重介绍几款常用的静态代码扫描工具,这些工具分为几类: 轻量级静态代码扫描工具:Cppcheck、 Tscancode 插件嵌入式扫描工具:SourceInsight_Scan、PC-lint Linux环境下扫描工具:splint 平台扫描工具:SonarQube 二、Cppcheck1、软件介绍 Cppcheck是C/C++代码的静态分析工具。它提供独特的代码分析来检测bug,并着重于检测未定义的行为和危险的编码结构,目标是只检测代码中的实际错误。 官方网站:http://cppcheck.net/ 一些使用方法博客:https://www.oschina.net/p/cppcheck 2、检查点 1)自动变量检查 2)数组的边界检查 3)class类检查 4)过期的函数,废弃函数调用检查 5)异常内存使用,释放检查 6)内存泄漏检查,主要是通过内存引用指针 7)操作系统资源释放检查,中断,文件描述符等 8)异常STL 函数使用检查 9)代码格式错误,以及性能因素检查 3、Windows版本界面风格 1、软件介绍 TscanCode是腾讯出品的开源静态代码扫描工具,旨在助力开发与测试人员从代码层面挖掘问题,将那些长期困扰项目的诸如空指针宕机等问题,扼杀于萌芽阶段。支持用户根据不同需求自定义配置检查项,有极强的扩展性和可维护性。平均扫描速度10W行/分钟。 官方下载地址:https://github.com/Tencent/TscanCode 详细使用博客参考:https://blog.csdn.net/liweibin812/article/details/84544750 2、检查点 1)空指针检查 2)数据越界 3)内存泄漏 4)逻辑错误 5)可疑代码检查 6)运算错误 3、windows版本界面风格 1)软件界面 支持单文件扫描,目录扫描,选定一个目录后,可以重复多次扫描。 1、软件介绍 SourceInsight_Scan是一款集成在 SourceInsight 中的c/c++代码静态分析插件,集成了cppcheck,coverity,pclint等业界优秀的静态分析工具的优点。旨在帮助开发人员,在 IDE 中快速发现编译器无法发现的非语法错误,降低修复成本。无需编译,平均扫描速度高达10W行/分钟,快速发现潜在的质量风险,平均准确率高达80%。 官方网站:https://sourceforge.net/projects/siscan/ 安装使用说明参考:https://blog.csdn.net/sheji105/article/details/88988619 2、检查点 1)空指针检查 2)数据越界 3)内存泄漏 4)逻辑错误 3、嵌入source insight 界面 1)嵌入source insight 嵌入效果如下,可以指定当前文件,也可以扫描目录。 1、软件介绍 PCLint是GIMPELSOFTWARE公司研发的C/C++软件代码静态分析工具,可以说,PCLint是一种更加严格的编译器。其主要分为PCLint和FlexeLint,PCLint主要应用于Windows平台,以二进制可执行文件提供,而FlexeLint应用于其他平台,例如Linux,以源代码形式发布。 PCLint不但能够对程序进行全局分析,识别没有被适当检验的数组下标,报告未被初始化的变量,警告使用空指针连同冗余的代码,还能够有效地提出许多程序在空间利用、运行效率上的改进点。 官网:http://www.gimpel.com/html/index.htm 最新安装包:http://download.csdn.net/detail/winking324/8162819 安装配置参考:https://blog.csdn.net/feng_ma_niu/article/details/40631521 详细介绍文档参考:http://www.docin.com/p-31343126.html?docfrom=rrela 2、检查点 1) 空指针检查 2) 数组越界 3) 内存泄漏 4) 强类型检查 5) 变量值跟踪 6) 赋值顺序检查 7) 弱定义检查 8) 格式检查 9) 缩进检查 10)const变量检查 11)volatile变量检查 3、嵌入Source Insight界面 1)嵌入source insight中使用 1、软件介绍 splint是一个GNU免费授权的 Lint程序,是一个动态检查C语言程序安全弱点和编写错误的程序。Splint会进行多种常规检查,包括未使用的变量,类型不一致,使用未定义变量,无法执行的代码,忽略返回值,执行路径未返回,无限循环等错误。 官网:http://splint.org/ 安装参考文档:https://blog.csdn.net/sunjiajiang/article/details/7368684 splint需安装automake-1.6支持 2、检查点 1)空指针检查 2)类型检查 3)内存管理 4)缓存边界 5)宏 6)函数接口 7)控制流 3、Linux环境下使用展示 1、软件介绍 SonarQube我们可以检测出项目中重复代码, 潜在bug, 代码规范,安全性漏洞等问题。可以通过使用scanner,通过配置文件,修改项目信息,在命令行中调用scanner工具,进行扫描,并推送给sonarqube,通过SonarQube web UI展示出来。 官网下载地址:https://www.sonarqube.org/downloads/ (7.9版本支持中文语言包) c/c++代码规则插件下载:https://github.com/SonarOpenCommunity/sonar-cxx/releases 配置免费c/c++代码规则插件参考:https://blog.csdn.net/ZYzffffff/article/details/82466660 SonarQube的安装、配置与使用:https://www.cnblogs.com/qiumingcheng/p/7253917.html 2、检查点 1)内存泄漏 2)死循环 3)逻辑流程错误 4)空指针引用 5)编码规范 6)错误处理 3、使用界面 1)启动sonarqube服务成功如下图: 4、总结 SonarQube功能强大,配置比较复杂(需要jdk支持、安装中文包,安装c/c++规则插件)。目前的试用情况来看,c代码检查项目详细,规则配置较多,功能完善,但是检查似乎有点问题,详见结果展示。页面显示清晰明了,但需要一定的时间熟悉操作。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |