主要内容

-show-similar-overflows

以绕回模式显示所有溢出

语法

-show-similar-overflows

描述

-show-similar-overflows 会使所有溢出以绕回模式显示,即使它们的根本原因相同也是如此。

如果您为有符号整数的溢出模式 (-signed-integer-overflows)无符号整数的溢出模式 (-unsigned-integer-overflows) 选项选择了 warn-with-wrap-around,则发生溢出的值将被绕回。例如,INT_MAX + 1 将绕回为 INT_MIN。具有溢出值的路径将继续延伸到具有绕回值的溢出之外,并可能在几行之后导致类似的溢出。默认情况下,Code Prover 会检测由同一根本原因导致的溢出,并且仅显示类似溢出中的第一个。如果您修复此溢出,则后续的溢出也会得到修复。如果您希望以绕回模式查看所有溢出,请使用 -show-similar-overflows 选项。

在用户界面(仅限 Polyspace® 桌面端产品)中,在配置窗格的其他字段中输入此选项。请参阅其他

示例

在以下示例中,var 的值未知,极端情形可能会导致 *copy1 = var * 2 运算中发生溢出。相同的极端情形还会导致下一运算中发生溢出。Code Prover 仅针对第一个运算显示橙色上溢检查结果。

int input();

void getEven(int* copy1, int* copy2) {
    int var;
    var = input();
    *copy1 = var * 2;
    *copy2 = var * 2;
}

如果您使用 -show-similar-overflows 选项,则 Code Prover 针对两个运算都会显示橙色上溢检查结果。

int input();

void getEven(int* copy1, int* copy2) {
    int var;
    var = input();
    *copy1 = var * 2;
    *copy2 = var * 2;
}

版本历史记录

在 R2020b 中推出