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)的一种,它在处理复杂的计算问题或模型的过程中通过对问题进行近似抽象,取出其中的关键部分进行分析,从而减少问题的复杂程度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一知半解-老同志

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值