Infinities (-check-infinite)

Задайте, как обрабатывать операции с плавающей точкой, которые приводят к бесконечности

Описание

Эта опция влияет только на анализ Code Prover.

Задайте, как анализ должен обрабатывать операции с плавающей точкой, которые приводят к бесконечности.

Задать опцию

Пользовательский интерфейс (только для настольных продуктов): В строении проекта опция находится на узле Check Behavior. Смотрите Зависимости для других опций, которые вы также должны включить.

Командная строка и файл опций: Используйте опцию -check-infinite. См. «Информация о командной строке».

Зачем использовать эту опцию

Используйте эту опцию, чтобы включить обнаружение операций с плавающей точкой, которые приводят к бесконечности.

Если вы задаете, что анализ должен учитывать нефинитные поплавки, по умолчанию анализ не помечает эти операции. Используйте эту опцию, чтобы обнаружить эти операции, все еще включая нефинитные поплавки.

Настройки

По умолчанию: allow

allow

Проверка операции не производится верификацией.

Например, в следующем коде нет Overflow проверки.

double func(void) {
    double x=1.0/0.0;
    return x;
}
warn-first

Эта верификация производит проверку операции. Проверка определяет, является ли результат операции бесконечным, когда сами операнды не бесконечны. Эта верификация не завершает поток выполнения, который создает бесконечность.

Если верификация обнаруживает операцию, которая создает бесконечность как единственный возможный результат на всех путях выполнения, и сами операнды никогда не являются бесконечными, проверка становится красной. Если операция потенциально может привести к бесконечности, проверка будет оранжевой.

Например, в следующем коде существует неблочная проверка Overflow на бесконечность.

double func(void) {
    double x=1.0/0.0;
    return x;
}

Несмотря на то, что Overflow проверяют / операция красная, верификация продолжается. Например, зеленая проверка Non-initialized local variable появится на x в return оператор.

forbid

Верификация производит проверку операции и завершает поток выполнения, который создает бесконечность.

Если проверка окрашена красным цветом, верификация не будет продолжена для оставшегося кода в тех же возможностях, что и проверка. Если чек оранжевый, верификация продолжается, но удаляет из фактора значения переменных, которые произвели бесконечность.

Например, в следующем коде существует блокировка Overflow проверки на бесконечность.

double func(void) {
    double x=1.0/0.0;
    return x;
}

Верификация останавливается, потому что Overflow проверяет / операция красная. Например, проверка Non-initialized local variable не отображается на x в return оператор.

Зависимости

Чтобы использовать эту опцию, вы должны включить режим верификации, который включает бесконечности и NaNs. См. Consider non finite floats (-allow-non-finite-floats).

Информация о командной строке

Параметр: -check-infinite
Значение: allow | warn-first | forbid
По умолчанию: allow
Пример (Code Prover): Polyspace Code Prover -sources file_name -check-бесконечный запрет
Пример (Код Prover Server): Полипространство -code-prover-server -sources file_name -check-бесконечный запрет
Введенный в R2016a