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