-show-similar-overflows

Показать все переполнения в режиме переноса

Синтаксис

-show-similar-overflows

Описание

-show-similar-overflows приводит к тому, что все переполнения отображаются в режиме переноса, даже если они происходят от одной и той же первопричины.

Если вы выбираете warn-with-wrap-around для опции Overflow mode for signed integer (-signed-integer-overflows) или Overflow mode for unsigned integer (-unsigned-integer-overflows), значения, которые переполнены, обернуты. Для образца значение INT_MAX + 1 оборачивается к INT_MIN. Путь с переполненным значением продолжается после переполнения с обернутым значением и может привести к аналогичному переполнению нескольких строк позже. По умолчанию Code Prover обнаруживает переполнения из одной и той же первопричины и показывает только первое из подобных переполнений. Если вы исправили это переполнение, последующие переполнения также фиксированы. Если вы хотите увидеть все переполнения в режиме переноса, используйте опцию -show-similar-overflows.

Если вы запускаете анализ из пользовательского интерфейса (Polyspace® только для продуктов), на панели Configuration, можно ввести эту опцию в поле Other. См. Other.

Примеры

В этом примере значение var неизвестен, и краевые случаи могут привести к переполнению в операции *copy1 = var * 2. Те же краевые случаи также приводят к переполнению в следующей операции. Code Prover показывает оранжевую Overflow проверку только на первой операции.

int input();

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

Если вы используете опцию -show-similar-overflowsCode Prover показывает оранжевое Overflow, проверяющее обе операции.

int input();

void getEven(int* copy1, int* copy2) {
    int var;
    var = input();
    *copy1 = var * 2;
    *copy2 = var * 2;
}
Введенный в R2020b