exponenta event banner

NaNs (-check-nan)

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

Описание

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

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

Задать опцию

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

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

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

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

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

Настройки

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

allow

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

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

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

Проверка производит проверку операции. Проверка определяет, является ли результатом операции NaN, если сами операнды не являются NaN. Например, проверка помечает операцию val1 + val2 только если результатом может быть NaN, когда оба val1 и val2 не являются NaN. Проверка не завершает поток выполнения, который создает NaN.

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

Например, в следующем коде существует неблокирующая операция Invalid on floats check for NaN.

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

Несмотря на то, что операция Invalid on floats проверена на - операция красного цвета, проверка продолжается. Например, зеленая неинициализированная проверка локальной переменной появляется на y в return заявление.

forbid

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

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

Например, в следующем коде имеется блокирующая операция Invalid на floats check for NaN.

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

Проверка прекращается, так как операция Invalid on floats на - операция красного цвета. Например, неинициализированная проверка локальной переменной не отображается на y в return заявление.

Проверка недопустимости операции на плавающем режиме для NaN также отображается на / и имеет зеленый цвет.

Зависимости

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

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

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