code prover 运行时检查 -凯发官方首页

main content

code prover 运行时检查

polyspace® code prover™ 会检查 c/c 代码中的每个运算是否存在某些运行时错误,并将结果显示为红色、绿色或橙色检查。有关详细信息,请参阅code prover 结果和源代码颜色。

您必须审查红色或橙色检查并确定是否要修复您的代码。下面的表列出了 polyspace code prover 执行的检查,以及如何审查这些检查。

数据流检查

检查如何审查详细信息

从 main 或其他入口函数开始,调查函数为何未出现在调用图中。

确定函数的调用点,然后调查它们为何出现在不可达代码中。

找到前面的变量初始化(如果有),看看您的程序是否可以绕过它们。

找到前面的指针初始化(如果有),看看您的程序是否可以绕过它们。

找到前面的全局变量初始化(如果有),看看您的程序是否可以绕过它们。

找出函数体中未以 return 语句结尾的路径。

不可达代码

调查代码中的条件语句为何冗余,例如,始终为 true 或始终为 false。

数值检查

检查如何审查详细信息

审查代码中导致分母值为零的先前运算。

审查代码中导致位移量超出边界或为负值(左移)的先前运算。

审查代码中导致运算溢出的先前运算。

静态内存检查

检查如何审查详细信息

审查代码中使用的绝对地址并确保这些地址有效。

审查代码中导致指针指向为其分配的内存缓冲区之外的先前运算。

审查代码中导致数组索引大于或等于数组大小的先前运算。

控制流检查

检查如何审查详细信息

审查函数体中的运算,并确定哪些运行时错误是当前函数调用相关的问题所导致的。

审查循环中的运算,并确定循环为什么没有终止,或者为什么会在其中一个循环运行中发生确定的运行时错误。

c 检查

检查如何审查详细信息

确定出现非正数数组大小或错误使用 typeid 或 dynamic_cast 运算符的根本原因。

找出函数体中未以 return 语句结尾的路径。

调查为什么某个 virtual 成员调用或 this 指针的使用是一种错误的面向对象编程模式。

调查为什么指向当前对象的指针的值可能为 null。

调查某个异常是如何在引发它的函数中逃脱而未被捕获到的。

其他检查

检查如何审查详细信息

查明函数指针误用、数组转换不正确或变量值超出指定约束的根本原因。

调查为什么当前对标准库例程的调用中的参数无效。

调查为什么 assert 语句中的条件会失败。

相关主题

网站地图