设为首页 - 加入收藏
广告 1000x90
您的当前位置:144177黄大仙有求必应 > 静态缓冲区 > 正文

CC++代码静态分析工具调研

来源:未知 编辑:admin 时间:2019-06-12

  静态分析(static analysis)是指在不执行代码的情况下对其进行分析评估的过程,是软件质量和软件安全保障的重要一环。它通过词法分析、语义分析、控制流分析、数据流分析等技术对代码逐行解析暴露问题,从而协助我们将许多在运行时才会暴露的棘手麻烦扼杀于摇篮之中。

  代码静态分析能够识别诸多类型的漏洞或缺陷,轻至警告级的「变量未使用」,重至错误级的各类bug,这里列举几种常见的、较严重的、可静态检测的问题。

  缓冲区溢出是指向缓冲区中存入超出其空间大小的数据量,导致多余的数据覆盖其他区域的合法数据,类似倒入容器中的水过多而导致溢出,流到它不该去的地方,造成不可预期的后果。从实践统计看,缓冲区溢出问题是软件中最普遍存在的漏洞问题,在C/C++这类不提供内存越界检测的语言中尤甚。通常,发生缓冲区溢出的情况有:

  内存泄漏一般指堆内存的泄漏(也有系统资源的泄漏),程序申请的内存资源没有被合理地释放,导致这部分内存不能被回收利用而造成资源的浪费。严重时,过多的内存泄漏会造成系统崩溃。C/C++语言没有自动回收机制,需要程序员自行确保内存使用的闭环(new/delete、alloc/free、malloc/free、GlobalAlloc/GlobalFree成对使用)。

  当指针变量未被初始化,或指向的内存已被回收时,该指针便成了野指针。其指向的内存地址是非法的,对这块非法区域进行操作将导致不可预料的后果。

  根据工作需要,从可检测的语言、使用平台和授权三方面考量,调研了20余种主流的C/C++代码静态分析工具。

  根据以下标准,筛选出3款适用性较高的工具——Cppcheck、Flawfinder、TscanCode——进行详细调研:

  为进行一次实践对比,从TscanCode的GitHub上抓到一组现成的C/C++编码问题示例,共94个CPP文件,考察三者的检测效果。

  安装十分简便,只需在官网下载最新的可执行安装包(本文目前为cppcheck-1.83-x86-Setup.msi)跟着向导「下一步」即可。

  分析的结果报告可保存为格式化纯文本或XML,并可借助Python pygments将XML生成为HTML。

  TscanCode是腾讯的开源项目,为此次调研的唯一一款本土工具,起初构建于Cppcheck的基础之上,后来进行了重新实现,并加入了对C#和Lua的支持。

  空指针检查,包含可疑的空指针,判空后解引用比如Crash等共3类subid检查

  逻辑错误,重复的代码分支,bool类型和INT进行比较,表达式永远True或者false等共18类检查

  可疑代码检查,if判断中含有可疑的=号,自由变量返回局部变量等共计15类检查

  运算错误,判断无符号数小于0,对bool类型进行++自增等,共计11类检查

  安装同样便捷,下载安装包(本文目前为TscanCodeV2.14.24.windows.exe)跟着向导「下一步」即可。

  实践表明,Flawfinder对中文注释更不友好,直接拿TscanCode的测试集跑会报编码错误,尽管这些CPP文件本来就是Flawfinder文档所建议的UTF-8格式:

  David A. Wheeler本人也在官网特别声明Flawfinder是款相对简单的静态分析工具,不进行数据流和控制流分析,甚至不识别函数的参数类型。

  全球最闲程序员🎓 业余时间致力于计算机科普写作,签约作品《01改变世界》系列在纵向上沿着历史进程讲述历代计算工具的组成结构、人类计算思维的层层步进,在横向上全面解析现代计算机的工作原理,从硬件到软件多角度给出系统剖析。路过的你若恰好喜欢,是我的无上荣幸~ 《01改变世界:计算机发展史趣谈》 《01改变世界:计算机原理趣谈》 其他计算机科普:

  Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线)。分布式系统的协调导致了样板模式, 使用Spring Cloud开发人员可以快速地支持实现这些模式的服务和应用程序。他们将在任何分布式...

  禁锢在冷暗里的光 被春风嗲嗲得拔起 天水的北山,草尖披头散发 还在昨日忧伤里慌张 小城大事 三月雨堕 砸不起喧闹的春潮 闷闷不乐 听说,汉中遍野的油菜花 正开出金色的微笑 出发,把家乡的残冬寄存 找个理由,看看外面的世界 心,就不再那么小 那么固执地守着寂寞 必须大声说:借...

  使用推荐 mac下建议使用Mou windows 下建议使用MarkdownPad 标题 根据使用的 # 的多少来改变字体的大小相当于html中的h标签 列表 使用* 就可以获得列表 引用 使用 右箭头就可以获取引用例如 this is a 引用 图片与链接 图片为 !...

  木龙骨吊顶施工如果不够规范,将会严重影响吊顶的美观性,而且还有可能因为不牢固而威胁到我们的人身安全,所以小编在这里为大家介绍一下木龙骨吊顶施工工艺,希望对大家了解木龙骨吊顶的施工有所帮助。 一、木质吊顶施工流程引见 家居装修后,许多业主会抱怨吊顶呈现装置不结实、外表不平整等...

  “还要不要继续剪?”理发师看出了我的心疼,“要!”我咬咬牙,一切重生都要从毁灭开始,尽管我意识到自己还是舍不得,都说头发是愁丝,那就快刀斩乱麻吧。 出了理发店刚刚9点,早晨。10点钟有一个翻译技巧方面的会议时间还充足,我步行去开会地点,少了一头长发,头好像不倒翁似的来回晃,...

本文链接:http://that-a-way.com/jingtaihuanchongqu/158.html

相关推荐:

网友评论:

栏目分类

现金彩票 联系QQ:24498872301 邮箱:24498872301@qq.com

Copyright © 2002-2011 DEDECMS. 现金彩票 版权所有 Power by DedeCms

Top