Цикл не завершается или содержит ошибку
Эта проверка цикла определяет, имеет ли цикл одну из следующих проблем:
Цикл определенно не завершается.
Проверка появляется только в том случае, если Polyspace® не удается обнаружить выходной путь из цикла. Например, если цикл появляется в функции, и условие завершения цикла удовлетворяется для некоторых входных параметров функции, проверка не появляется, даже если условие может не выполняться для некоторых других входов.
Цикл содержит определенную ошибку в одной итерации.
Несмотря на то, что определенная ошибка возникает в итерации одного цикла, поскольку верификация приводит к тому, что тело цикла агрегируется по всем итерациям цикла, ошибка показывает оранжевую проверку в теле цикла. Чтобы указать, что произошел определенный отказ, в команде loop отображается проверка Non-terminating loop красного цвета.
В отличие от других проверок, эта проверка появляется только тогда, когда возникает определенная ошибка. В результатах верификации чек всегда красный. Если ошибка возникает только в некоторых случаях, например, если привязка цикла переменна и вызывает проблему только для некоторых значений, проверка не отображается. Вместо этого команда loop отображается штриховым красным цветом с дополнительной информацией в подсказке.
Проверка также не отображается, если оба условия верны:
Цикл имеет тривиальный предикат, такой как for(;;)
или while(1)
.
Цикл имеет пустое тело или тело без оператора выхода, такого как break
, goto
, return
или исключение.
Вместо этого оператор цикла подчеркивается красными штрихами. Если вы поместите курсор в оператор цикла, то увидите, что верификация рассматривает цикл как преднамеренный. Если вы намеренно вводите бесконечные циклы, например, для эмуляции циклических задач, вы не должны обосновывать красные проверки.
Используя эту проверку, можно идентифицировать операцию в цикле, которая вызывает ошибку времени выполнения.
Чтобы найти источник ошибки, на панели Source установите курсор на вызове функции и просмотрите подсказку.
Для циклов с меньшим количеством итераций можно перейти к источнику ошибки в теле цикла. Выберите цикл, чтобы увидеть полную историю результата. Кроме того, щелкните правой кнопкой мыши ключевое слово цикла и выберите Go to Cause, если опция существует.
Группа: Управляйте потоком |
Язык: C | C++ |
Акроним: NTL |