Polyspace介绍及入门操作
版权声明:本文为博主原创文章,未经博主允许不得转载。[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介绍及入门操作相关推荐
- Cadence Virtuoso 入门操作(一)
Cadence Virtuoso 617 小白入门操作指北 本文是Cadence Virtuoso 6.1.7软件的入门使用教程,适合Cadence软件的初学者,初学者可以跟随本教程初步熟悉原 ...
- 2021年大数据HBase(十):Apache Phoenix的基本入门操作
全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 前言 Apache Phoenix的基本入门操作 一.Pho ...
- arcgis 地图_ArcGIS超详细入门操作:ArcGIS矢量化地图详细步骤
今天给大家带来的干货是[ArcGIS超详细入门操作:ArcGIS矢量化地图详细步骤],欢迎大家收藏查阅! 在桌面上新建一个文件夹,打开ArcCatalog, "文件"--" ...
- .NET平台开源项目速览(6)FluentValidation验证组件介绍与入门(一)
原文:.NET平台开源项目速览(6)FluentValidation验证组件介绍与入门(一) 在文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑)中,给大家初步介绍了一下F ...
- HBase入门: 简介、特点、优缺点、数据结构、系统架构、入门操作、适用场景、注意事项与遇到的坑
原文地址 https://www.cnblogs.com/Little-Li/p/7878219.html https://yq.aliyun.com/articles/54410 https://b ...
- RStudio介绍及入门
RStudio介绍及入门 1 R Studio 介绍 2 函数与对象 2.1 函数 2.2 数据输入 2.3 元素引用 3 R语言绘图 4 数据保存 5 学习建议 6 唠唠叨叨 Hello, 这里是行 ...
- Badboy入门操作手册
Badboy入门操作手册 下载地址:http://www.badboy.com.au/ 版本:Version 2.2.5 1.安装及卸载 安装:解压,按照安装向导,安装即可. 启动:双击badboy. ...
- 干货|以太坊全景介绍及入门学习路径(分享实录)
2019独角兽企业重金招聘Python工程师标准>>> 本次分享主要是针对以太坊的基本概念的介绍,属于入门级别,主要目的是帮助大家快速认识和了解以太坊. 自我介绍 大纲 1 交易所那 ...
- 【Cadence Virtuoso】IC617 入门操作 (MOS特性分析)
Cadence Virtuoso IC617 入门操作篇 前言 一.软件操作 (1)创建自己的Library (2)创建Library下的 Cell 二.电路搭建 (1)调出器件 三.电路仿真 (1) ...
最新文章
- tomcat的webapps下没有出现配置过的文件夹
- 【转】gif文件格式详解
- 如何上传file对象
- 牛客网【每日一题】4月30日题目精讲 换个角度思考
- yum如何安装特定版本的gcc_linux下如何升级python
- python图像文件压缩_python实现图片压缩代码实例
- 键入一个网页后了发生什么
- 【华为解决方案】 华为云架构解决方案
- [导入]ASP.NET2.0中Tabs的简单实现
- MariaDB学习记录
- 除了巨头苹果之外,还有哪些股获股神巴菲特青睐?
- 计算机中存储单位的认识与理解
- Js学习心得和思考方法
- CReFF缓解长尾数据联邦学习(IJCAI 2022)
- 企业WiFi认证 保护企业的信息
- Filling the Gaps: Multivariate Time Series Imputation by Graph Neural Networks
- (三)苏世民:我的经验和教训:追梦(3)
- ArcGIS 矢量数据拓扑编辑
- centos安装matlab2018的步骤(基本是借鉴的但是会有些自己的解释及补充)
- 哨向 Mika Lelush 3