【网络学习】Coverity代码检查工具详细介绍

本文详细介绍Coverity的PreventSQS工具如何检测并修复C/C++源代码中的并发问题、性能瓶颈、安全漏洞,包括死锁、内存泄漏、API误用等,提升软件质量与安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

目录

Coverity Prevent SQS

检测缺陷(C/C++)

解决缺陷(C/C++)

能够发现的C/C++缺陷

并发

性能下降

导致崩溃的缺陷

不正确的程序行为

不正确的APIs使用

C/C++安全性问题

安全编码缺陷

隐含的缺陷


Coverity Prevent SQS

Prevent SQS(软件质量系统)是检测和解决C、C++、Java源代码中严重缺领先的自动化方法。可以对构建环境、源代码和开发的过程给出一个完整的分析,Prevent SQS建立了获得高质量软件的标准。

静态源代码分析允许我们在软件开发生命周期的早期阶段发现和修复缺陷,节省数以百万计的相关成本,Prevent SQS是业界标准,因为只有Coverity理解和掌握静态源代码分析技术所具有的严格的要求。

检测缺陷(C/C++)

  • Prevent SQS源代码分析引擎利用软件DNA图谱来分析代码的各个方面。
  • Prevent SQS模块化缺陷检测平台能够使很多模块(或检查器)同时分析代码,查找不同类别的缺陷。
  • Prevent SQS预配置的库说明了作为产品的一部分的第三方库APIs和功能。
  • Prevent SQS针对C/C++的分析引擎

引擎

功能

路径流程引擎

通过构建一个表示经过每一个函数的所有的路径的图表分析代码中的每个函数的控制流

数据追踪引擎

用于分析从程序中每个路径中的声明收集的所有的整型和布尔型等数据

统计引擎

用于分析代码作为一个整体的行为特征

过程间调用总结引擎

一个主要的创新,是的Prevent SQS可以执行整个程序的分析,分析文件间和模块间的热河层次的复杂的调用链

类型流程引擎

用于提高C++分析中依赖于类层次关系的报告的结果的精度

虚假路径引擎

用于分析每个分支条件,以确定在当前路径它将真、假、或不确定

加速引擎

保存横越每个路径时的每个缺陷分析所收集的信息。消除冗余路径,不需要横越任何不必要的路径来找到最多的缺陷

数据传播引擎

吧过程检调用总结引擎产生的所有总结和数据追踪引擎记录的所有数据汇总起来,是Coverity特有的、上下文敏感的过程检分析能力的关键

增量分析引擎

通过缓存分析数据来提高性能,以便后续的分析仅需要包含变化的数据

解决缺陷(C/C++)

  • Prevent SQS内嵌的自动分发功能吧缺陷结果发给能够修复缺陷的开发人员和团队。
  • 可处理的缺陷报告在几分钟内提供一个直观的界面和说明,而不是几小时或几天。
  • 缺陷工作流程管理器帮助开发团队创建客户化的检测、分析、解决Prevent SQS报告的缺陷的流程。
  • 每个缺陷的完整路径在源代码中被清洗的显示,开发人员能够快速追踪错误的根源。
  • 缺陷的关键属性直接嵌入在源代码中,这样开发人员能够理解分析引擎用于检测错误的逻辑。

能够发现的C/C++缺陷

并发

  • 死锁
  • 错误使用的阻塞条用

性能下降

  • 内存泄漏
  • 文件句柄泄漏
  • 定制的内存和网络资源泄漏
  • 数据库连接泄漏

导致崩溃的缺陷

  • 空指针引用
  • 释放后引用
  • 多次释放
  • 不正确的内存分配
  • 不匹配的数组新建、删除

不正确的程序行为

  • 逻辑错误导致的死代码
  • 未初始化变量
  • 负数的无效引用

不正确的APIs使用

  • STL使用错误
  • API错误处理

C/C++安全性问题

安全编码缺陷

  • 缓冲区溢出
  • 整型溢出
  • 缺失、不充分的恶意数据和字符串输入的验证
  • 格式化字符串的不安全
  • SQL注入攻击
  • 交叉站点脚本攻击

隐含的缺陷

  • 整个系统折衷
  • 服务拒绝攻击
  • 优先权扩张
  • 保密数据泄露
  • 数据丢失
  • 仲裁代码执行

Coverity一般是部署在企业内部的,通过https页面的方式向程序员报告扫描的安全隐患。

Coverity多次检测同样的代码(两次之间,被检测的代码有改动),不会覆盖先前的报告,即第一次检测得到的report item number还是有效的,不会被新的报告覆盖,搜索它仍然可以查看先前检测出来的问题。

Coverity虽然很强大,但其实检测也是有缺陷的,毕竟它只是个辅助工具,不能完全达到人的水平,有时报的问题是误报。

 

By Urien 2021年3月23日10:37:51

 

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值