-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 |
Пример (Код Prover Server):
Полипространство -code-prover-server -sources file_name |