exponenta event banner

Бесконечности (-check-infinite)

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

Описание

Этот параметр влияет только на анализ программы проверки кода.

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

Задать опцию

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

файл командной строки и параметров: Использовать параметр -check-infinite. См. раздел Сведения о командной строке.

Зачем использовать этот параметр

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

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

Настройки

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

allow

Проверка не приводит к проверке операции.

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

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

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

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

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

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

Несмотря на то, что проверка переполнения на / операция красного цвета, проверка продолжается. Например, зеленая неинициализированная проверка локальной переменной появляется на x в return заявление.

forbid

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

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

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

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

Проверка прекращается, поскольку проверка переполнения на / операция красного цвета. Например, неинициализированная проверка локальной переменной не отображается на x в return заявление.

Зависимости

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

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

Параметр: -check-infinite
Значение: allow | warn-first | forbid
По умолчанию: allow
Пример (проверка кода): polyspace-code-prover -sources file_name -check-infinite forbid
Пример (сервер проверки кода): polyspace-code-prover-server -sources file_name -check-infinite forbid
Представлен в R2016a