分享配置Polyspace分析C代码的方法和简介

polyspace可以分析c、c++以及ada代码,本文以嵌入式系统中最为常见的c代码分析为例说明polyspace配置一个工程的过程和注意事项。
1. 配置语言和处理器类型
c语言由于其灵活性,在不同的编译器中有不同的约束和扩展,会影响最终生成的目标码的行为。polyspace分析c代码时首先要最大程度和目标编译器的行为保持一致,这样才能保持代码分析的意义。因此在开始创建polyspace工程时,我们需要配置编译器和处理器类型:
所选用的c语言标准:c90/c99
所用编译器类型:keil/tasking/diab/iar…
(编译器通常定义了标准c语言之外的扩展,如关键字sfr、sbit等。选定编译器类型相当于告知了polyspace在遇到此类非标扩展时如何解释其行为。)
目标处理器类型:定义不同数据类型的大小和字节顺序类型,如mpc5xx系列处理器定义如下:
(某些运行时错误检查与此有关,如同一变量在int定义为16位时会发生溢出,而在int定义为32位时不会发生溢出。)
其他编译器行为设定:如负除取整方向、有符号数右移逻辑、枚举类型定义方式等。
2.选择验证分析模式
polyspace有两种基本的验证分析模式:应用级分析和模块级分析,可以分别对应于集成测试和单元测试。
所谓应用级分析指用户待分析的源代码中包含了 main函数,选择应用级分析即分析进程从用户main函数入口,为了更好地模拟实际程序运行和调度情形,有时需要进行多任务(multitasking)设置,有机会在以后再进一步介绍。
模块级分析通常待分析代码不包含main函数,polyspace会自动打桩生成main函数并建立待分析函数的调用关系进行分析,并可进一步根据需要细化配置。如对于以下被调函数function_sub和主调函数function_top,可以设置为以下两种分析入口形式:
function_sub(){ ……};
function_top(){……
function_sub();
……};
自动生成的main函数中只调用function_top:在分析function_top的进程中分析function_sub,即function_sub在function_top的上下文中被分析。
自动生成的main函数中同时调用function_top和function_sub:function_sub除了在function_top的上下文中被分析,也会在直接在main函数上下文中被分析。对应的可能场景是function_sub会被其他函数调用,需要更为鲁棒地分析其安全性。
— 总结 —
polyspace的配置是一个既简单又灵活的过程,通过对编译器行为的模拟和分析模型的选择,我们可以得到更为有意义和更符合需要的结果。
往期 | 代码分析验证
polyspace应用到软件开发和验证流程
浅谈polyspace的静态分析

e络盟宣布与Dialog半导体签署新的全球特许经营协议
智能魔镜显示器的应用将为你带来一场科技秀
三相市电电流检测电路分析
LCD电视面板报价跌至历史冰点 减产计划还在进行中
LED点阵电子显示屏系统的设计
分享配置Polyspace分析C代码的方法和简介
配电柜中的电流互感器起什么作用
测量尺寸须知:激光跟踪仪选择基准面的要求
盘点第三代半导体性能及应用
红外热成像国际标准再获突破,助推我国红外热成像产品走出去
企业如何用好 AI,以华为云通用 AI 解决方案为思考出发点
5G如何用于医疗等行业
Windows 10可能会在即将到来的微软Tips应用更新中再次出现
如何选择一款好的临时保护UV胶,关于一些方法的介绍
消息称苹果AirTags和新款iPad Pro或三月份推出
5G时代怎样抓住机会快速发展
“十四五”期间我国光伏产业如何迸发出新的生机与活力?
极紫外光微影(EUV)技术据称将在5纳米(nm)节点时出现随机缺陷
中国集成电路产业是时候降降虚火了
2011便携产品创新技术展—展商名录