exponenta event banner

Просмотр и исправление не завершающих проверок контура

Выполните один или несколько из этих шагов до тех пор, пока не будет определено исправление для проверки контура без завершения. Существует несколько способов исправления чека. Описание проверки и примеры кода см. в разделе Non-terminating loop.

Общий рабочий процесс проверки проверок см. в разделе Интерпретация результатов проверки кода в пользовательском интерфейсе Polyspace Desktop.

Шаг 1: Интерпретировать информацию о проверке

Установите курсор на ключевое слово цикла, например for или while.

Получите из подсказки следующую информацию:

  • Является ли цикл бесконечным или содержит ошибку времени выполнения.

    В следующем примере вероятно, что цикл бесконечен.

  • Если цикл содержит ошибку времени выполнения, количество итераций цикла. Поскольку Polyspace ® считает, что выполнение останавливается при возникновении ошибки во время выполнения, по этому числу можно определить, какая итерация цикла содержит ошибку.

    В следующем примере вероятно, что цикл содержит ошибку времени выполнения. Вероятно, ошибка возникнет в 31-й итерации цикла.

Шаг 2: Определение первопричины проверки

  • Если цикл бесконечен, определите, почему условие завершения цикла не выполняется.

    Если в коде имеется бесконечный цикл, например для циклических приложений, можно добавить комментарий и обоснование в результат или код. См. раздел Результаты анализа пространства адресов с помощью исправлений ошибок или обоснований.

  • Если цикл содержит ошибку времени выполнения, определите ошибку, которая вызывает проверку цикла без завершения. Исправьте ошибку.

    В теле цикла ошибка времени выполнения обычно возникает как оранжевая проверка другого типа в операции. Проверка имеет оранжевый и не красный цвет, поскольку операция обычно проходит проверку в первых нескольких итерациях цикла и завершается неуспешно только в более поздней итерации. Однако, поскольку сбой происходит каждый раз при запуске цикла, проверка цикла без завершения по ключевому слову цикла имеет красный цвет.

    Для циклов с небольшим количеством итераций можно перейти непосредственно от ключевого слова цикла к операции, вызывающей ошибку времени выполнения.

    • Чтобы найти источник ошибки, на панели Источник (Source) выберите ключевое слово красного цикла. На панели Сведения о результате (Result Details) отображается полный журнал, ведущий к операции, которая вызывает ошибку времени выполнения.

    • Перейдите к источнику ошибки в теле цикла. Щелкните правой кнопкой мыши ключевое слово loop и выберите Go to Cause, если опция существует.

    Учебное пособие см. в разделе Определение работы цикла с ошибкой времени выполнения.

Шаг 3: Поиск общих причин проверки

  • Если цикл бесконечен:

    • Проверьте состояние окончания шлейфа.

    • В теле цикла проверьте, была ли изменена хотя бы одна из переменных, участвующих в условии завершения цикла.

      Например, если условие окончания шлейфа while (count1 + count2 < count3), посмотрите, меняете ли вы хотя бы один из count1, count2, или count3 в цикле.

    • При изменении переменных, включенных в условие завершения цикла, проверьте, не меняются ли они в правильном направлении.

      Например, если условие окончания шлейфа while(i<10) и вы уменьшаете i в цикле цикл не завершается. Необходимо увеличить i.

  • Если цикл содержит ошибку времени выполнения:

    • Если переменная управления циклом является индексом массива, проверьте наличие оранжевой ошибки индекса массива вне границ в теле цикла.

    • Если переменная управления контуром передается функции, проверьте, можно ли связать красную ошибку «Non-terminating loop» с оранжевой ошибкой в теле функции.