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