不枉初心,砥砺前行

皮皮祥的博客

欢迎留言,评论

导航

Polyspace工具基本介绍

文章目录


专题目录

1. Polyspace工具基本介绍

1.1 Polyspace工具作用

  • Polyspace :软件运行时错误检测工具

  • 作用:解决代码鲁棒性问题,提高软件安全性,可靠性

    • 编码错误
    • 编码规则一致性(MISRA/JSF)
    • 静态度量(代码量,调用次数等)
    • 测试覆盖度
    • 软件质量水平
  • 针对C/C++代码

    • Polyspace Bug Finder : 静态检测,代码错误、规则
    • Polyspace Code Prover : 运行错误检查,组件深层验证

1.2 Polyspace工程建立

  • 以分析fun_test.c函数文件为例进行说明,该文件中的源函数见文末附件,工程建立方法如下:

1. 建立新工程
在这里插入图片描述
2. 导入分析代码

  • Project Souce Files : 分析的源文件
  • Project Include Folders : 源文件包含的头文件(本例无)
    在这里插入图片描述
    3. 选择分析模块
  • Module为具体分析内容模块:
    • Module Souce Files : 分析代码内容
    • Configuration : 检查内容配置
    • Result : 结果
      在这里插入图片描述
      4. 分析项配置
  • Comfiguration 配置如下:(此处不做详细说明,按照默认的配置进行分析)
    在这里插入图片描述
    5. 运行检查
  • 选择分析检查方法,点击开始仿真运行
  • 还可选择是否运行生成新的结果文件
    在这里插入图片描述

1.3 Polyspace Bug Finder 分析及结果

  • 分析结束后,分析结果有如下展示窗口 :
  1. Output Summary窗口
    此窗口会展示分析进度,分析过程信息输出、分析中遇到的问题、是否分析结束等信息。(当分析代码编译存在问题时,该过程会有红色警告,文件查找失败等内容会有黄色警告)。
    在这里插入图片描述
  2. Dashboard窗口
    分析结果报告显示窗口,会显示如下信息内容:
    1)风险错误数量比例饼状图:红色表示高风险错误,粉红表示低风险,(点击在Result List窗口会列举出对应的内容信息)。
    2)分析覆盖度柱状图
    3)错误类型及数量图
    在这里插入图片描述
  3. Result List窗口
    1)列举出具体风险类型项,位置,数量等信息,比如示例检查出1处执行不到的死代码和2出可能溢出的位置。
    2)点击风险项,在Source窗口对照源代码分析问题。
    在这里插入图片描述
  4. Source窗口
    Source窗口会展示风险代码并告知错误产生的具体原因:
    1)左侧代码行数前有个红圆圈,标识风险位置
    2)代码颜色红色标识,表明风险产生的原因
    3)产生风险的过程原因代码下有小点点标识出来,鼠标放在小点点位置上,会自动弹窗显示出原因。
    在这里插入图片描述
  5. Result Details窗口
    详细展示分析过程,解释风险产生了流程。
    在这里插入图片描述

1.4 Polyspace Code Prover 分析及结果

Polyspace Code Prover 分析结果和 Polyspace Bug Finder 分析结果基本一样,补充介绍如下内容:

  1. Dashboard窗口颜色意义
    1)绿色:绝对安全代码
    2)红色:存在错误的高风险代码
    3)橙色:可能存在错误的底风险代码(比如取决与函数的返回值,外部变量范围)
    4)灰色:不会执行的死代码
    在这里插入图片描述
  2. Source窗口
    在Source窗口同样以绿色,红色,灰色,橙色4个级别展示出代码的安全风险级别。
    在这里插入图片描述

附件:分析源函数

extern signed char extFunc( signed char y );
signed char firstfun(void){
	signed char x = 1;
	signed char y;
	signed char z;
	signed char res;
	y = x + 5;
	if( y < 0 ){
		y = 0;
	}
	z = extFunc( y );
	if( z <= 123){
		res = z + 5;
	}else{
		res = z + 6;
		res = res/2;
	}
	return res;
}

感谢阅读 若有错误 敬请见谅!!!


posted on 2022-05-11 14:05  皮皮祥  阅读(2778)  评论(0编辑  收藏  举报