Main Content

审查 Code Prover 运行时检查

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

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

数据流检查

下表概述了如何审查 Code Prover 中的某些数据流检查的结果。

检查如何审查详细信息
Function not called

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

Review and Fix Function Not Called Checks
Function not reachable

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

Review and Fix Function Not Reachable Checks
Non-initialized local variable

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

Review and Fix Non-initialized Local Variable Checks
Non-initialized pointer

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

Review and Fix Non-initialized Pointer Checks
未初始化的变量

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

Review and Fix Non-initialized Variable Checks
Return value not initialized

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

Review and Fix Return Value Not Initialized Checks
不可达代码

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

Review and Fix Unreachable Code Checks

数值检查

下表概述了如何审查 Code Prover 中的某些数值检查的结果。

检查如何审查详细信息
Division by zero

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

Review and Fix Division by Zero Checks
移位运算无效

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

Review and Fix Invalid Shift Operations Checks
Overflow

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

Review and Fix Overflow Checks

静态内存检查

下表概述了如何审查 Code Prover 中的某些静态内存检查的结果。

检查如何审查详细信息
Absolute address usage

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

Review and Fix Absolute Address Usage Checks
Illegally dereferenced pointer

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

Review and Fix Illegally Dereferenced Pointer Checks
数组索引越界

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

Review and Fix Out of Bounds Array Index Checks

控制流检查

下表概述了如何审查 Code Prover 中的某些控制流检查的结果。

检查如何审查详细信息
Non-terminating call

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

Review and Fix Non-Terminating Call Checks
Non-terminating loop

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

Review and Fix Non-Terminating Loop Checks

C++ 检查

下表概述了如何审查 Code Prover 中的某些 C++ 特定检查的结果。

检查如何审查详细信息
Invalid C++ specific operations

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

Review and Fix Invalid C++ Specific Operations Checks
Function not returning value

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

Review and Fix Function Not Returning Value Checks
Incorrect object oriented programming

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

Review and Fix Incorrect Object Oriented Programming Checks
Null this-pointer calling method

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

Review and Fix Null This-pointer Calling Method Checks
Uncaught exception

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

Review and Fix Uncaught Exception Checks

其他检查

下表概述了如何审查 Code Prover 中的某些未分类检查的结果。

检查如何审查详细信息
Correctness condition

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

Review and Fix Correctness Condition Checks
Invalid use of standard library routine

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

Review and Fix Invalid Use of Standard Library Routine Checks
User assertion

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

Review and Fix User Assertion Checks

相关主题