Polyspace Code Prover 中的橙色检查详解
1. 橙色检查概述
Polyspace Code Prover 会对 C/C++ 代码中的每个操作进行运行时错误检查,并将结果显示为红色、绿色或橙色检查。橙色检查表示 Polyspace 检测到可能的运行时错误,但无法证明。以下是橙色检查出现的条件:
|条件|详情|示例|
| ---- | ---- | ---- |
|操作在执行路径上多次出现|操作在执行路径上多次出现或在多个执行路径上出现,且在静态验证期间,该操作仅在部分时间或部分路径上失败|在具有多次迭代的循环中或被多次调用的函数中执行的操作|
|操作涉及可取值多个的变量|操作涉及一个可以取多个值的变量,且在静态验证期间,该操作仅对部分值失败|操作涉及一个 volatile 变量|
以下是两个橙色检查的示例代码:
// 多个路径导致的橙色检查
void main() {
func(1);
func(0);
}
double func(int value) {
return (1.0/value); //Orange check
}
// 多个值导致的橙色检查
double func(int value) {
int reducedValue = value%21 - 10; // Result in [-10,10]
return 1.0/reducedValue; //Orange check
}
2. 为何要审查橙色检查
Polyspace 在分析时会考虑实际执行路径的超集,这是一种合理
超级会员免费看
订阅专栏 解锁全文
66

被折叠的 条评论
为什么被折叠?



