0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

什么是完备静态分析?

北汇信息POLELINK 2022-11-11 10:16 次阅读

在开发安全、可靠和合规的软件时,完备静态分析是一种有益的实践。本篇文章中,我们将讨论完备分析与静态分析的不同之处,为什么它很重要,以及完备静态代码分析的工作原理

什么是完备静态分析?

完备静态分析是指分析结果的完整性或"健全性"。对于提供可靠性分析结果的静态分析工具,这意味着如果软件中存在特定的错误,缺陷或漏洞,那么该工具将出具相关的报告。

如果出现存在争议的问题,那么工具将以某种形式提出警告*,这样一来任何问题都会的得到诊断。

(*备注:这些在Helix QAC中被归类为可能的问题,如果不需要完备分析,则可以禁用。)

完备静态分析不同于其他静态分析的地方在于,后者的结果可能基于在一定时间或资源内可能发生的事情。

鉴于对程序的运行时行为进行建模需要某些近似值(例如,缺乏对程序输入或操作系统状态的知识),完备分析需要过度近似。

过度近似可以保证没有假阴性(对于给定的漏洞类型),而低近似值通常优先考虑没有误报。

poYBAGNtlomAdgNyAAGjiPgMAAg485.png

其他形式的静态分析没有表现出这种严格性,并且可能包含低近似和过近似的混合。

也许完备和不完备的分析工具所得出的结果可能都会为程序的特定部分提供一份清晰的运行状态证明,但是完备分析引擎提供了额外的保证,即印证这一结论的所有可能性和所有路径都已得到验证。

完备静态分析的工作原理

在提到完备分析时,我们通常会考虑更复杂的程序间和程序内控制和数据流分析形式,正如当今最先进的静态分析工具所采用的那样。

与更简单的代码语法和语义分析不同,控制流和数据流静态分析通常与检测更复杂的问题相关联,例如:

  • 空指针取消引用
  • 阵列或缓冲区下溢和溢出
  • 未初始化对象的使用
  • 内存分配和取消分配异常
  • 数字溢出、下溢和环绕
  • 除以零
  • 死代码
  • 数据争用、死锁和其他并发冲突

控制和数据流分析是一项高计算负载的任务,因为必须考虑系统的所有可能输入以及通过系统所有可能的控制流路径。事实上,由于控制流和数据流分析的暴力穷举算法会导致分析时间指数暴涨,因此很少采用该方案。符号执行和抽象解释算法将是一个更优雅的选择。

根据Roberto Amadini、Graeme Gange、Peter Schachte、Harald Søndergaard和Peter J.Stuckey的抽象解释、符号执行和约束,“抽象解释是一个静态分析框架,用于完备的过度近似程序的所有可能运行时状态。”。

而“符号执行是一个可访问性分析框架,它试图探索程序的所有可能的执行路径”。抽象解释和符号执行在执行期间以不变性或路径条件的形式维持约束,该路径条件确定可以执行哪些路径,并且可以在各种数据源中保持哪些值。

然而,需要注意的是,虽然抽象解释是完备的,但符号执行却不是。

为什么完备静态分析很重要?

健全性是安全关键软件系统中的一个重要因素,特别是因为它保证软件不包含任何正在检查的编码缺陷。也就是说,完备分析可用于显示软件中没有错误。

因此,在汽车系统的ISO 26262功能安全(FuSa)标准中,抽象解释分析被明确引用为软件单元验证方法(表7,方法1i)。

如何使用Helix QAC 执行完备静态分析

由于能够提供深入和高度准确的分析结果,Helix QAC在30多年来一直是一个值得信赖的静态代码分析工具。Helix QAC能够进行良好的静态分析,是需要满足严格合规要求的严格监管和安全关键行业的首选工具。

但是,为了在Helix QAC项目中启用完备分析,需要执行某些步骤:

poYBAGNtloiATUbtAAKTVrTm6kA962.png

数据流深度需要设置为最大值(5),这将添加多个 -prodoption,如上面的屏幕截图所示。(请参阅 QAC 或 QAC++ 组件手册中的"分析超时"部分,了解为什么这些"超时"设置对于声音分析是必需的。

此外,“df::inter=5”和“inter-TU Analysis”虽然不是完备分析所必需的,但可以以额外的计算成本启用,以减少需要报告的可能问题的数量。这些设置的效果是启用程序间和程序内分析。

选择Helix QAC进行完备静态分析

亲身体验Helix QAC完备静态分析对代码质量和健全性的影响,立即联系北汇信息以免费试用。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 代码
    +关注

    关注

    30

    文章

    4787

    浏览量

    68589
收藏 人收藏

    评论

    相关推荐

    静态路由和链路聚合的通信原理

    静态路由和链路聚合的通信原理
    发表于 12-23 16:59 0次下载

    汽车异构硬件平台开发如何进行静态代码分析

    先进的静态代码分析工具,其新版本中引入的多CCT功能为开发人员提供了强大的支持,该功能不仅简化了多编译器环境下的代码分析过程,还可以极大增强代码的质量和安全性。
    的头像 发表于 10-09 16:15 528次阅读
    汽车异构硬件平台开发如何进行<b class='flag-5'>静态</b>代码<b class='flag-5'>分析</b>

    恒讯科技分析:如何测试海外静态IP服务的稳定性和速度?

    测试海外静态IP服务的稳定性和速度可以通过以下步骤进行: 1、选择测试工具:使用网络测试工具,如ping命令、traceroute(或 racert)、网络速度测试网站(例如
    的头像 发表于 08-14 14:58 345次阅读

    RS触发器的静态特性分析

    RS触发器(Reset-Set Trigger)是数字电路中的一种基本逻辑单元,具有两个稳定状态,即“置位”(Set)状态和“复位”(Reset)状态。其静态特性主要指的是在没有外部触发信号变化时,触发器保持其当前状态不变的能力。
    的头像 发表于 08-12 09:55 517次阅读

    对放大电路的分析方法介绍

    放大电路是电子技术中非常重要的组成部分,它广泛应用于信号处理、通信、测量等领域。对于放大电路的分析,通常可以分为直流分析和交流分析两种情况。下面我们将介绍这两种分析方法。 直流
    的头像 发表于 08-07 10:08 620次阅读

    静态工作点的高低对电路有什么影响

    静态工作点(Q点)是半导体器件在直流条件下的运行状态,它对电路的性能和稳定性有着重要的影响。在本文中,我们将介绍静态工作点的高低对电路的影响,包括其对放大器性能、稳定性、功耗、热效应等方面
    的头像 发表于 08-06 15:38 1697次阅读

    基于ANSYS的高速磨削电主轴动静态性能分析

    以国产120MD60Y6型高速磨削电主轴为研究对象,使用有限元分析方法,基于ANSYS Workbench建立高速电主轴模型,先分析静态特性,计算工作条件下电主轴前端所受径向力和轴承径向刚度;然后
    的头像 发表于 08-05 11:20 152次阅读
    基于ANSYS的高速磨削电主轴动<b class='flag-5'>静态</b>性能<b class='flag-5'>分析</b>

    恒讯科技分析:香港站群服务器为什么要做伪静态处理呢?

    提高搜索引擎优化(SEO)效果:伪静态处理可以使得动态网页URL看起来像是静态网页的URL,这有助于搜索引擎更好地索引网站内容。搜索引擎通常偏好静态网页,因为它们认为静态网页更稳定、内
    的头像 发表于 07-31 12:49 261次阅读

    暂态稳定和静态稳定的区别是什么

    暂态稳定和静态稳定是电力系统稳定性分析中的两个重要概念,它们分别描述了电力系统在受到扰动后的动态响应和稳态运行状态。下面将介绍暂态稳定和静态稳定的区别,并从多个方面进行比较。 定义上的区别 暂态稳定
    的头像 发表于 07-26 09:41 2598次阅读

    IAR通过多架构认证的静态分析工具加速代码质量自动化

    公司推出经TÜV SÜD认证的C-STAT静态分析工具,适用于最新发布的IAR Embedded Workbench for RISC-V V3.30.2功能安全版。
    的头像 发表于 06-19 15:49 377次阅读

    晶闸管的静态特性与伏安特性详解

    晶闸管的静态特性主要涉及其在静态条件下的电气特性,包括其导通和关断的行为。
    的头像 发表于 05-24 18:10 2337次阅读

    静态电阻应变仪的使用及桥路连接

    静态电阻应变仪是一种用于测量结构或材料在静态负载下产生的微小形变的仪器。
    的头像 发表于 05-16 15:48 2652次阅读

    如何设置静态IP代理

    静态IP
    jf_60146132
    发布于 :2024年04月29日 07:46:31

    怎么用Vivado做覆盖率分析

    在做仿真的时候往往会去做代码覆盖率和功能覆盖率的分析,来保证仿真是做的比较充分完备的。
    的头像 发表于 01-03 12:34 1696次阅读
    怎么用Vivado做覆盖率<b class='flag-5'>分析</b>

    什么是静态IP地址?什么是DHCP?DHCP与静态IP到底有何区别呢?

    什么是静态IP地址?什么是DHCP?DHCP与静态IP到底有何区别呢?DHCP与静态IP地址哪个好? 静态IP地址是为网络设备(如计算机、服务器、路由器等)手动配置的固定IP地址。它不
    的头像 发表于 12-27 14:09 6299次阅读