Выполните один или несколько из этих шагов, пока вы не определите фиксацию для проверки Non-terminating loop. Существует несколько способов зафиксировать проверку. Для описания проверки и примеров кода, смотрите Non-terminating loop
.
Для общего рабочего процесса при рассмотрении проверок смотрите, Интерпретируют Результаты Polyspace Code Prover.
Установите свой курсор на ключевое слово цикла, такое как for
или while
.
Получите следующую информацию из подсказки:
Бесконечен ли цикл или содержит ошибку времени выполнения.
В следующем примере вероятно, что цикл бесконечен.
Если цикл содержит ошибку времени выполнения, количество итераций цикла. Поскольку Polyspace® полагает, что выполнение останавливается, когда ошибка времени выполнения происходит от этого номера, можно определить, какая итерация цикла содержит ошибку.
В следующем примере вероятно, что цикл содержит ошибку времени выполнения. Ошибка, вероятно, произойдет на 31-й итерации цикла.
Если цикл бесконечен, определите, почему условие выхода из цикла никогда не удовлетворяется.
Если у вас сознательно есть бесконечный цикл в вашем коде, такой что касается циклических приложений, можно добавить комментарий и выравнивание в результате или коде. Смотрите Результаты Polyspace Адреса Через Исправления ошибок или Комментарии.
Если цикл содержит ошибку времени выполнения, идентифицируйте ошибку, которая вызывает проверку Non-terminating loop. Зафиксируйте ошибку.
В теле цикла ошибка времени выполнения обычно происходит как оранжевая проверка другого типа на операции. Проверка является оранжевой и не красной, потому что операция обычно передает регистрацию первых нескольких итераций цикла и перестала работать только в более поздней итерации. Однако, потому что отказ происходит каждый раз выполнения цикла, Non-terminating loop начинает работу, ключевое слово цикла является красным.
Циклы for с немногими итерациями, можно перейти непосредственно от ключевого слова цикла до операции, вызывающей ошибку времени выполнения.
Чтобы найти источник ошибки, на панели Source, выбирают красное ключевое слово цикла. Панель Result Details показывает полное продвижение истории операции, которая вызывает ошибку времени выполнения.
Перейдите к источнику ошибки в теле цикла. Щелкните правой кнопкой по ключевому слову цикла и выберите Go to Cause, если опция существует.
Для примера смотрите, Идентифицируют Операцию Цикла с Ошибкой времени выполнения.
Если цикл бесконечен:
Проверяйте свое условие выхода из цикла.
В теле цикла смотрите, заменяете ли вы по крайней мере одну из переменных, вовлеченных в условие выхода из цикла.
Например, если условием выхода из цикла является while (count1 + count2 < count3)
, смотрите, изменяете ли вы по крайней мере один из count1
, count2
или count3
в цикле.
Если вы заменяете, вовлеченные в условие выхода из цикла, смотрите, изменяете ли вы их в правильном направлении.
Например, если условием выхода из цикла является while(i<10)
, и вы постепенно уменьшаете i
в цикле, цикл не останавливается. Необходимо постепенно увеличить i
.
Если цикл содержит ошибку времени выполнения:
Если контрольная переменная цикла является индексом массива, смотрите, есть ли у вас оранжевая ошибка Out of bounds array index в теле цикла.
Если контрольная переменная цикла передается функции, смотрите, можно ли связать красную ошибку Non-terminating loop с оранжевой ошибкой в теле функции.