code prover 运行时检查
polyspace® code prover™ 会检查 c/c 代码中的每个运算是否存在某些运行时错误,并将结果显示为红色、绿色或橙色检查。有关详细信息,请参阅code prover 结果和源代码颜色。
您必须审查红色或橙色检查并确定是否要修复您的代码。下面的表列出了 polyspace code prover 执行的检查,以及如何审查这些检查。
数据流检查
检查 | 如何审查 | 详细信息 |
---|---|---|
从 | ||
确定函数的调用点,然后调查它们为何出现在不可达代码中。 | ||
找到前面的变量初始化(如果有),看看您的程序是否可以绕过它们。 | ||
找到前面的指针初始化(如果有),看看您的程序是否可以绕过它们。 | ||
找到前面的全局变量初始化(如果有),看看您的程序是否可以绕过它们。 | ||
找出函数体中未以 | ||
不可达代码 | 调查代码中的条件语句为何冗余,例如,始终为 true 或始终为 false。 |
数值检查
检查 | 如何审查 | 详细信息 |
---|---|---|
审查代码中导致分母值为零的先前运算。 | ||
审查代码中导致位移量超出边界或为负值(左移)的先前运算。 | ||
审查代码中导致运算溢出的先前运算。 |
静态内存检查
检查 | 如何审查 | 详细信息 |
---|---|---|
审查代码中使用的绝对地址并确保这些地址有效。 | ||
审查代码中导致指针指向为其分配的内存缓冲区之外的先前运算。 | ||
审查代码中导致数组索引大于或等于数组大小的先前运算。 |
控制流检查
检查 | 如何审查 | 详细信息 |
---|---|---|
审查函数体中的运算,并确定哪些运行时错误是当前函数调用相关的问题所导致的。 | ||
审查循环中的运算,并确定循环为什么没有终止,或者为什么会在其中一个循环运行中发生确定的运行时错误。 |
c 检查
检查 | 如何审查 | 详细信息 |
---|---|---|
确定出现非正数数组大小或错误使用 | ||
找出函数体中未以 | ||
调查为什么某个 | ||
调查为什么指向当前对象的指针的值可能为 | ||
调查某个异常是如何在引发它的函数中逃脱而未被捕获到的。 |
其他检查
检查 | 如何审查 | 详细信息 |
---|---|---|
查明函数指针误用、数组转换不正确或变量值超出指定约束的根本原因。 | ||
调查为什么当前对标准库例程的调用中的参数无效。 | ||
调查为什么 |