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

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

3天内不再提示

关于Polyspace的静态分析的详细解析和应用

MATLAB 来源:djl 作者:龚小平 2019-09-16 17:15 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Polyspace是MathWorks产品家族的一员, 也许有人还不知道它能做什么以及作用原理是什么。简单来说,Polyspace是基于抽象解释原理的代码级静态分析和验证工具。

的确,由于时间和成本的关系我们不可能做穷举测试,但并不能就此推断我们没有测试的工况是安全的。

以汽车行业为例,已发生的多次召回事件经分析是因为软件缺陷尤其是运行时错误(run-time error)造成的。所谓的运行时错误,是指在通常的调试过程中需要程序运行起来之后才可能显现的错误,如指针越界、数据溢出等。换句话说,如果测试用例没有覆盖到特定的输入条件时,这些问题可能就没有机会被发现。

关于Polyspace的静态分析的详细解析和应用

Windows平台下调试运行时错误发生的案例

除汽车行业以外,航空航天、铁路、医疗等所谓高完整性系统行业,嵌入式软件往往承载着系统大部分重要功能的实现,一旦发生问题会带来异常严重的后果。软件的静态分析作为动态功能测试的重要补充,在这些行业应用非常广泛。

所谓的静态分析,指在不运行程序的情况下,基于数学方法的分析来验证代码是否满足规范性、安全性、可靠性、可维护性等指标的一种代码分析技术。通俗地说,静态分析可以通过不写测试用例达到动态穷举测试的效果,是用来提高代码鲁棒性和证明软件安全性的重要手段。

Polyspace所采用的静态分析方法是抽象解释,是软件形式化验证方法(Formal Verification)的一种,它在处理复杂的计算问题或模型的过程中通过对问题进行近似抽象,取出其中的关键部分进行分析,从而减少问题的复杂程度。

关于Polyspace的静态分析的详细解析和应用

抽象解释

简单举例,判断x/(x-y)是否有除零的风险的问题可以转换为左下图 x和y的取值范围是否有可能落在y=x的红线上。Polyspace基于程序控制结构、函数调用关系、多任务分析等,通过复杂的数据流析取过程抽象到右下图绿色多面空间中来判断是否有可能落在y=x上。

关于Polyspace的静态分析的详细解析和应用

Polyspace中的抽象解释

经Polyspace分析后的代码结果以不同颜色表:

绿色代表为安全代码,无需花过多精力审查;

红色代码问题代码,需要立刻解决;

灰色代表不可达代码,需要审查是设计错误还是有意为之;

橙色代表有风险代码,需要重点审查。

另外还可以设定编码规范(如MISRA)和自定义代码风格,违反之处以紫色显示;同时可以看到代码变量随控制流的数据范围变化情况,快速查找和定位问题原因。

关于Polyspace的静态分析的详细解析和应用

Polyspace的分析结果

不论是自动代码还是手写代码甚或混合代码,Polyspace可以承担类似“质量门”的角色,帮助查找常见软件缺陷、进行代码规范检查、提供软件度量信息,更进一步通过证明不存在运行时错误交付安全代码,大大提高代码审查的效率并可提供安全认证所需的相关证据。

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

    关注

    30

    文章

    4941

    浏览量

    73145
  • 静态分析
    +关注

    关注

    1

    文章

    45

    浏览量

    4182
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    关于晶振的静态电容与动态电容

    静态电容与动态电容 C0与C1 的区别是什么呢?
    的头像 发表于 11-21 15:38 4097次阅读
    <b class='flag-5'>关于</b>晶振的<b class='flag-5'>静态</b>电容与动态电容

    什么是CVE?如何通过SAST/静态分析工具Perforce QAC 和 Klocwork应对CVE?

    本文将为您详解什么是CVE、CVE标识符的作用,厘清CVE与CWE、CVSS的区别,介绍CVE清单内容,并说明如何借助合适的静态分析工具(如Perforce QAC/Klocwork),在软件开发早期发现并修复漏洞。
    的头像 发表于 10-31 14:24 281次阅读
    什么是CVE?如何通过SAST/<b class='flag-5'>静态</b><b class='flag-5'>分析</b>工具Perforce QAC 和 Klocwork应对CVE?

    汽车软件团队必看:基于静态代码分析工具Perforce QAC的ISO 26262合规实践

    ISO 26262合规指南,从ASIL分级到工具落地,手把手教你用静态代码分析(Perforce QAC)实现高效合规。
    的头像 发表于 08-07 17:33 867次阅读
    汽车软件团队必看:基于<b class='flag-5'>静态</b>代码<b class='flag-5'>分析</b>工具Perforce QAC的ISO 26262合规实践

    技术干货 | ATX7006线性计算与AD/DA动态分析解析

    想知道如何在ATX7006上进行高精度线性度计算?如何通过傅里叶变换分析AD/DA转换器的动态性能?本文详细解析了线性计算的命令配置、结果获取方法,以及动态测试中的信噪比、谐波失真等关键参数的计算原理。
    的头像 发表于 06-30 10:13 918次阅读
    技术干货 | ATX7006线性计算与AD/DA动态<b class='flag-5'>分析</b><b class='flag-5'>解析</b>

    电磁环境动态监测与分析平台软件全面解析

    电磁环境动态监测与分析平台软件全面解析
    的头像 发表于 04-28 16:28 524次阅读
    电磁环境动态监测与<b class='flag-5'>分析</b>平台软件全面<b class='flag-5'>解析</b>

    ​VLM(视觉语言模型)​详细解析

    详细解析: 1. 核心组成与工作原理 视觉编码器 :提取图像特征,常用CNN(如ResNet)或视觉Transformer(ViT)。 语言模型 :处理文本输入/输出,如GPT、BERT等,部分模型
    的头像 发表于 03-17 15:32 7572次阅读
    ​VLM(视觉语言模型)​<b class='flag-5'>详细</b><b class='flag-5'>解析</b>

    机房托管费详细分析

    机房托管费是一个复杂而多变的话题,它受到多种因素的影响,以下是对机房托管费用的详细分析,主机推荐小编为您整理发布机房托管费详细分析
    的头像 发表于 02-28 09:48 1011次阅读

    奶泡棒专用芯片详细解析

    奶泡棒专用芯片详细解析
    的头像 发表于 02-24 11:23 592次阅读

    集成电路设计中静态时序分析介绍

    本文介绍了集成电路设计中静态时序分析(Static Timing Analysis,STA)的基本原理、概念和作用,并分析了其优势和局限性。   静态时序
    的头像 发表于 02-19 09:46 1303次阅读

    ADC的静态指标有专用的分析工具吗?

    请问:ADC的静态指标有专用的分析工具吗?该指标很少在评估ADC指标时使用,是否该指标不重要,应用中什么情况下需要评估该指标? 另外ADC的SNR = 6.02*N + 1.76 +10*log10(fs/2BW) 当被采样信号为单音时 该BW为多少?
    发表于 02-08 08:13

    国外物理服务器详细解析

    国外物理服务器是指位于国外数据中心的物理设备,用于提供互联网服务。以下是对国外物理服务器的详细解析,主机推荐小编为您整理发布国外物理服务器详细解析
    的头像 发表于 02-07 09:36 700次阅读

    EtherCAT通讯协议详细解析

    Automation GmbH)研发。EtherCAT自2003年被引入市场以来,凭借其高性能、低延迟和灵活的拓扑结构,迅速成为工业自动化领域的重要通信技术之一。本文将对EtherCAT通讯协议进行详细解析,包括其概述、工作原理、拓扑结构、协议格式、寻址方式及命令类型等
    的头像 发表于 02-02 16:34 8304次阅读

    功率分析仪的功率是怎么算的

    功率分析仪的功率计算主要基于电压和电流的测量值。以下是关于功率分析仪功率计算的详细解释:
    的头像 发表于 01-28 15:06 2442次阅读

    硅谷云平台详细解析

     硅谷云平台作为硅谷地区领先的云计算服务提供商,在数字化时代发挥着举足轻重的作用。主机推荐小编为您整理发布硅谷云平台的详细解析
    的头像 发表于 01-24 09:24 623次阅读

    分享关于编译器的科普

      Clang和GCC的主要区别如下所示: Clang比GCC编译用的时间更短,包括预处理、语法分析解析、语义分析、抽象语法树生成的时间。 Clang比GCC的内存占用更小。 Clang生成的中间
    的头像 发表于 12-09 09:49 907次阅读