Результат программы автоматического доказательства кода и цвета исходного кода

Эта тема объясняет различные цвета, используемые в отображении результатов анализа Polyspace® Code Prover™.

Результирующие цвета

Polyspace отображает различные результаты верификации с определенными значками и цветами на панели Result Details и Results List.

Проверки на этапе выполнения

Polyspace Code Prover проверяет каждую операцию в ваш код для конкретных ошибок времени выполнения. Программное обеспечение присваивает цвет операции на основе того, доказало ли это существование или отсутствие ошибки времени выполнения на всех или некоторых путях к выполнению.

Проверяйте цветЦельПримерЗначок

Красный

Операции подсветок, которые, как доказывают, вызывают конкретную ошибку на всем выполнении paths*.

Верификация Polyspace Code Prover определяет ошибки со ссылкой на стандарт языка. Хотя некоторые ошибки могут быть приемлемыми для конкретной среды компиляции, они нарушают стандарт языка. Чтобы позволить часть зависимого средой поведения, используйте соответствующие аналитические опции. Для получения дополнительной информации смотрите Предположения Верификации и Поведение Проверки.

Красный Overflow на:

z = x+y;

Операция + переполняется для каждого значения x и y, который верификация рассматривает в той точке.

Серый

Подсвечивает недостижимый код.

Серая проверка Unreachable code:

if(x>0)
{}
else
{}

Ответвление else недостижимо для всех значений x, который верификация рассматривает в той точке.

Оранжевый

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

Для получения дополнительной информации смотрите Оранжевые Регистрации Программы автоматического доказательства Кода.

Оранжевый Overflow на:

z = x+y;

Анализ не мог доказать, переполняется ли операция +.

Наиболее распространенная причина состоит в том, что операция переполняется только для некоторых значений x и y, который верификация рассматривает в той точке. Можно использовать подсказки на переменных x и y в операции, чтобы видеть область значений значений, которые рассматривает верификация.

Зеленый

Операции подсветок, которые, как доказывают, не вызывают конкретную ошибку на всем выполнении paths*.

Зеленый Overflow на:

z = x+y;

Операция + не переполняется для всех значений x и y, который верификация рассматривает в той точке.

* Для большинства проверок, программное обеспечение отключает следование траектории выполнения первая ошибка времени выполнения на пути. Поэтому, если это доказывает определенную (красную) ошибку или отсутствие ошибки (зеленой) на операции, доказательство допустимо только для путей к выполнению, которые еще не были отключены в той точке в коде. Смотрите, что Анализ Программы автоматического доказательства Кода Следует за Красными и Оранжевыми Проверками.

Другие результаты

Помимо проверок на ошибки времени выполнения, Polyspace Code Prover также отображает другие результаты о вашем коде.

РезультатЦельЗначок
Кодирование нарушений правилаУказывает на нарушение предопределенных или пользовательских правил кодирования. для предопределенных правил и для пользовательских правил.
Метрики кодаУказывает на метрики сложности кода. для метрик, которые не превышают предел, который вы задали и для метрик, которые превышают предел.
Глобальные переменныеУказывает на объявление глобальной переменной. для разделяемых потенциально незащищенных переменных и для неразделяемых неиспользуемых переменных

Цвета исходного кода

Polyspace использует следующую цветовую схему для отображения кода по панели Source.

  • Строки с проверками:

    Для каждого проверять панель Results List, Polyspace присваивает цвет проверки соответствующему разделу кода.

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

      Этот недостижимый цикл for содержит макро-MAX_SIZE. Целая линия окрашена серый.

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

    • Для всех других строк Polyspace окрашивает только ключевое слово или идентификатор сопоставленными с проверкой.

      Это присвоение имеет три проверки: i и used_global инициализируются, но к массиву tab можно получить доступ вне его границ. Оператор [ окрашен в оранжевый, чтобы указать на проблему.

  • Строки с кодированием нарушений правила:

    Поскольку каждое кодирование управляет нарушением на панели Results List, присвоениях Polyspace к соответствующему ключевому слову или идентификатору:

    • (Инвертированный треугольник) символ, если правило кодирования является предопределенным правилом. Предопределенными доступными правилами является MISRA C®, MISRA® AC AGC, MISRA C++ или JSF® C ++.

      Этот оператор if и операция || нарушают правила MISRA.

    • Символ, если правило кодирования является пользовательским правилом.

      Это имя функции нарушает настраиваемое правило именования.

  • Строки с подсказками:

    Если подсказка доступна для ключевого слова или идентификатора на панели Source, Polyspace:

    • Подчеркивание тела использования для ключевого слова или идентификатора, если это сопоставлено с проверкой.

      Эта строка имеет и проверки и подсказки на input, % и used_global.

    • Использование подчеркнуло штриховой линией подчеркивание для ключевого слова или идентификатора, если это не сопоставлено с проверкой.

      Эта строка имеет подсказки на for и <, но не проверяет их.

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

      Этот вызов function_with_red приводит к ошибке времени выполнения.

  • Функциональные определения:

    Когда функция задана, Polyspace окрашивает синее имя функции.

  • Строки, деактивированные из-за условной компиляции:

    Polyspace присваивает более легкий оттенок серого коду, деактивированному из-за условной компиляции. Такой код происходит, например, в операторах #ifdef, где макрос для ответвления не задан. Этот код не влияет на верификацию.

Цвета глобальной переменной

Панель Variable Access показывает глобальные переменные в вашем коде наряду с операциями чтения и операциями записи на переменных.

Например, used_global является глобальной переменной, к которой получают доступ четыре раза: однажды во время инициализации, однажды в функциональном function_with_red, и дважды в функциональном function_with_grey.

Цветовая схема следующие:

  • Переменные цвета:

    • Оранжевый: Разделяемая, незащищенная глобальная переменная (только применимый к многозадачному коду)

    • Зеленый: Разделяемая, защищенная глобальная переменная (только применимый к многозадачному коду)

    • Черный: Неразделенная, используемая глобальная переменная

    • Серый: Неразделенная, неиспользованная глобальная переменная

    Смотрите глобальные переменные.

  • Цвета операции: Если операция происходит в недостижимом коде, это серо, в противном случае черно.

    В предыдущем примере одна операция в функциональном function_with_grey недостижима, но другой достижимо.

Для получения дополнительной информации смотрите Переменный доступ.