版权声明:本文为博主原创文章,未经博主允许不得转载。[https://editor.csdn.net/md?articleId=103352448](https://editor.csdn.net/md?articleId=103352448)

另外,部分摘抄自:博主:huior,链接地址:http://www.51testing.com/html/51/10851-73049.html;部分摘抄自:嵌入式软件动态运行时错误的检测,链接地址:https://wenku.baidu.com/view/2e151ef10242a8956bece444.html

0前言

PolySpace测试技术始于1996年,当时欧洲亚丽安娜501火箭由于飞行计算机软件运行错误而导致主/辅计算机全部停机并在飞行升空后爆炸,为此,法国国家计算机与控制研究所、欧洲航天局组织专门的力量研制以抽象解释技术(Abstract Interpretation techniques)为理论基础的新一代软件验证/测试工具—PolySpace,并在亚丽安娜502上得到成功的应用。1999年由法国国家计算机与控制研究所、欧洲航天局共同成立PolySpace Technology公司,将PolySpace产品正式商业化,并且在国内外军用项目上得到广泛应用。PolySpace是世界上首家自动检测嵌入式软件运行错误的工业化工具,是新一代的软件测试工具。
  2007年4月25日,PolySpace正式宣布被Mathworks收购,成为MathWorks产品家族的一员, 其作用原理:简单来说,Polyspace是基于抽象解释原理的代码级静态分析和验证工具。Polyspace由Bug Finder和Code Prover组成。Bug Finder使用语义分析的方法查找代码中的运行时错误、并发问题、安全漏洞和其他缺陷。Polyspace Code Prover使用抽象解释法证明源代码中不存在溢出、被零除、数组访问越界等运行时错误。


图1

1解决的问题

PolySpace解决的是Run-time Errors(运行时错误),其实就是帮忙发现代码自身存在的错误。具体到C语言来说,检测的错误主要是:

图2
  从技术上来讲,只要是C代码和C++代码,PolySpace都可以拿来用。但根据经验和PolySpace的特点,用在以下类型的代码上效果发挥最佳:嵌入式C代码、算法类型的,即运算多,典型的如TI DSP平台上的程序、Vxworks平台的控制类程序等;在通讯类、界面类的代码上效果则一般。

2入门操作

首先,申明一下,本文只是讲Polyspace Bug Finder的入门操作,Code Prover类似。并且,通过SIMULLINK建模自动生成代码,然后静态分析C代码。

2.1 建模


图3

2.2 生成代码参数配置


图4

图5

生成代码文件夹:

图6

备注: 基于模型设计—自定义目标系统配置指南链接:https://pan.baidu.com/s/1ym_OkoRet_bMrQIO6uokYA 提取码:f4y6)

2.3 建立Polyspace工程代入C语言

File——>New Project(Ctrol+N)——>

图7

2.4 导入.h和.c文件,C语言规范以及配置分析参数


图8

2.5 根据错误提示查找Help,修改模型重新Polyspace静态分析

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

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

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

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

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

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

3 Polyspace静态分析的局限性

PolySpace最大的局限性在于:分析速度慢。通常情况下,在配置比较高(CPU:3G Memory: >1G)的PC上,完整的分析1000行代码,平均需要15分钟。根据多年来和客户打交道的经验,客户普遍抱怨分析速度太慢。

4 Polyspace静态分析的建议

(1) 每个工具都有自身的优缺点。我们使用工具,和交朋友一样,要看的是其有什么优点,以及如何避开其不足,而不是紧盯其一个小缺点。

(2) PolySpace本身面向的就是高可靠性的市场,所以PolySpace对代码要求比较严格。在使用之前,如果代码不太规范,可能要对代码做一点修改,但都是通过配置的方式,不是直接去代码文件中修改。

(3) 建议程序员去使用PolySpace,因为它不仅可以帮助你发现错误,更重要的是,长期使用,会提高你的编程能力,让你明白什么样的写法是安全可靠的,什么样的写法是危险的,受益匪浅啊。

5 Polyspace在汽车行业应用

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

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


  除汽车行业以外,航空航天、铁路、医疗等所谓高完整性系统行业,嵌入式软件往往承载着系统大部分重要功能的实现,一旦发生问题会带来异常严重的后果。软件的静态分析作为动态功能测试的重要补充,在这些行业应用非常广泛。
  Polyspace所采用的静态分析方法是抽象解释,是软件形式化验证方法(Formal Verification)的一种,它在处理复杂的计算问题或模型的过程中通过对问题进行近似抽象,取出其中的关键部分进行分析,从而减少问题的复杂程度。

Polyspace介绍及入门操作相关推荐

  1. Cadence Virtuoso 入门操作(一)

    Cadence Virtuoso 617 小白入门操作指北     本文是Cadence Virtuoso 6.1.7软件的入门使用教程,适合Cadence软件的初学者,初学者可以跟随本教程初步熟悉原 ...

  2. 2021年大数据HBase(十):Apache Phoenix的基本入门操作

    全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 前言 Apache Phoenix的基本入门操作 一.Pho ...

  3. arcgis 地图_ArcGIS超详细入门操作:ArcGIS矢量化地图详细步骤

    今天给大家带来的干货是[ArcGIS超详细入门操作:ArcGIS矢量化地图详细步骤],欢迎大家收藏查阅! 在桌面上新建一个文件夹,打开ArcCatalog, "文件"--" ...

  4. .NET平台开源项目速览(6)FluentValidation验证组件介绍与入门(一)

    原文:.NET平台开源项目速览(6)FluentValidation验证组件介绍与入门(一) 在文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑)中,给大家初步介绍了一下F ...

  5. HBase入门: 简介、特点、优缺点、数据结构、系统架构、入门操作、适用场景、注意事项与遇到的坑

    原文地址 https://www.cnblogs.com/Little-Li/p/7878219.html https://yq.aliyun.com/articles/54410 https://b ...

  6. RStudio介绍及入门

    RStudio介绍及入门 1 R Studio 介绍 2 函数与对象 2.1 函数 2.2 数据输入 2.3 元素引用 3 R语言绘图 4 数据保存 5 学习建议 6 唠唠叨叨 Hello, 这里是行 ...

  7. Badboy入门操作手册

    Badboy入门操作手册 下载地址:http://www.badboy.com.au/ 版本:Version 2.2.5 1.安装及卸载 安装:解压,按照安装向导,安装即可. 启动:双击badboy. ...

  8. 干货|以太坊全景介绍及入门学习路径(分享实录)

    2019独角兽企业重金招聘Python工程师标准>>> 本次分享主要是针对以太坊的基本概念的介绍,属于入门级别,主要目的是帮助大家快速认识和了解以太坊. 自我介绍 大纲 1 交易所那 ...

  9. 【Cadence Virtuoso】IC617 入门操作 (MOS特性分析)

    Cadence Virtuoso IC617 入门操作篇 前言 一.软件操作 (1)创建自己的Library (2)创建Library下的 Cell 二.电路搭建 (1)调出器件 三.电路仿真 (1) ...

最新文章

  1. tomcat的webapps下没有出现配置过的文件夹
  2. 【转】gif文件格式详解
  3. 如何上传file对象
  4. 牛客网【每日一题】4月30日题目精讲 换个角度思考
  5. yum如何安装特定版本的gcc_linux下如何升级python
  6. python图像文件压缩_python实现图片压缩代码实例
  7. 键入一个网页后了发生什么
  8. 【华为解决方案】 华为云架构解决方案
  9. [导入]ASP.NET2.0中Tabs的简单实现
  10. MariaDB学习记录
  11. 除了巨头苹果之外,还有哪些股获股神巴菲特青睐?
  12. 计算机中存储单位的认识与理解
  13. Js学习心得和思考方法
  14. CReFF缓解长尾数据联邦学习(IJCAI 2022)
  15. 企业WiFi认证 保护企业的信息
  16. Filling the Gaps: Multivariate Time Series Imputation by Graph Neural Networks
  17. (三)苏世民:我的经验和教训:追梦(3)
  18. ArcGIS 矢量数据拓扑编辑
  19. centos安装matlab2018的步骤(基本是借鉴的但是会有些自己的解释及补充)
  20. 哨向 Mika Lelush 3

热门文章

  1. python怎在excel-Python操作Excel之xlsx文件
  2. 加密软件测试结果对比分析
  3. [Homework#1]回味·神笔马良
  4. SQL函数---SQL LCASE()
  5. figma:按组导出
  6. 不较真的生活跟咸鱼有什么区别
  7. 为什么一些创立才2、3年的创新公司,不赚钱却可以赴美上市?
  8. 是时候放弃putty了,推荐个putty的替代品:Xshell,Bitvise SSH Client
  9. 【TCS3200 颜色传感器与 Arduino 实现颜色识别】
  10. java opencv实现扫描图像去底色增强文字