Выполните один или несколько из следующих шагов до тех пор, пока вы не определите исправление для проверки Non-terminating loop. Существует несколько способов исправить проверку. Для получения описания примеров проверки и кода смотрите Non-terminating loop
.
Общий рабочий процесс проверки проверки см. в разделе Результаты интерпретации Code Prover в интерфейсе пользователя Polyspace Desktop.
Поместите курсор на ключевое слово цикла, такое как for
или while
.
Получите следующую информацию из подсказки:
Является ли цикл бесконечным или содержит ошибку времени выполнения.
В следующем примере вероятно, что цикл бесконечен.
Если цикл содержит ошибку времени выполнения, количество итераций цикла. Потому что Polyspace® считает, что выполнение останавливается, когда происходит ошибка времени выполнения, из этого числа можно определить, какая итерация цикла содержит ошибку.
В следующем примере вероятно, что цикл содержит ошибку времени выполнения. Вероятно, ошибка произойдет на 31-й итерации цикла.
Если цикл бесконечен, определите, почему условие завершения цикла никогда не удовлетворяется.
Если у вас в коде намеренно есть бесконечный цикл, например, для циклических приложений, можно добавить комментарий и обоснование в свой результат или код. Смотрите Адрес Результаты Polyspace через исправления ошибок или обоснования.
Если цикл содержит ошибку времени выполнения, идентифицируйте ошибку, которая вызывает проверку Non-terminating loop. Исправьте ошибку.
В теле цикла ошибка времени выполнения обычно возникает как оранжевая проверка другого типа на операции. Чек оранжевый и не красный, потому что операция обычно проходит чек в первых нескольких итераций цикла и прекращает работать только в более поздней итерации. Однако, поскольку отказ происходит каждый раз, когда цикл запускается, Non-terminating loop проверка ключевого слова цикла является красной.
Для циклов с несколькими итерациями можно перейти непосредственно от ключевого слова цикла к операции, вызывающей ошибку времени выполнения.
Чтобы найти источник ошибки, на панели 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 с оранжевой ошибкой в теле функции.