Зачем Нужен Отчет Misra Compliance И Как Его Получить В Pvs-Studio?

Если вы знаете о MISRA не понаслышке и хотели бы понять, соответствует ли ваш проект какому-либо стандарту MISRA, то решение есть.

Его название — соответствие MISRA. Недавно PVS-Studio научился формировать отчет о соответствии этому стандарту, и я хотел бы поделиться, как это делается.

Возможно, кому-то это облегчит жизнь.



Зачем нужен отчет MISRA Compliance и как его получить в PVS-Studio?

Если вы хотите узнать больше об отчете о соответствии MISRA, он доступен для вас.

видео .



Что такое соответствие MISRA

Соответствие MISRA — стандарт, который позволяет понять, соответствует ли ваш проект стандарту MISRA C\C++ с учетом всех отклонений и перекатегорий.

Соответствие MISRA распространяется на все стандарты MISRA, но в этой статье мы рассмотрим его использование на примере стандарта MISRA C 2012. В руководящих принципах MISRA C 2012 признается, что в некоторых ситуациях соблюдение требований неоправданно или даже невозможно.

В случае отклонений от правил все должно быть задокументировано.

Однако тогда может быть трудно понять, соответствует ли программа в конечном итоге этому стандарту.

Именно здесь на помощь приходит стандарт соответствия MISRA.

Правила получения соответствия MISRA

Главное, что нужно сделать, это понять, соответствует ли ваш проект MISRA C 2012 или нет. Для этого нам необходимо получить GCS (сводку соответствия рекомендациям).

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

Вот пример того, как это должно выглядеть:

Зачем нужен отчет MISRA Compliance и как его получить в PVS-Studio?

Номер и категория правила по умолчанию взяты из стандарта.

Однако соответствие MISRA позволяет изменить (перекатегоризировать) уровень рекомендаций, хотя это и не требуется.

Это делается каждым конкретным пользователем для конкретного проекта в соответствии с GRP (Guideline Recategorization Plan).

GRP — это действительный набор преобразований с одного уровня на другой.

Вот как это выглядит в виде таблицы:

Зачем нужен отчет MISRA Compliance и как его получить в PVS-Studio?

А чтобы было проще, приведем пример.

Допустим, у нас есть правило 1.1, уровень которого — «Обязательный».

Согласно таблице мы можем повысить уровень предупреждения до Обязательного или оставить его без изменений.

Это представлено зелеными ячейками.

Однако понижение уровня до «Рекомендованного» или «Отключенного» не допускается.

Это показано в красных клетках.

На основе полученных категорий можно указать соответствия правилам.

Возможные варианты сопоставления категорий MISRA выглядят следующим образом:

Зачем нужен отчет MISRA Compliance и как его получить в PVS-Studio?

Эта таблица используется для определения того, соответствует ли ваш проект стандарту MISRA C 2012. В частности, если у вас есть хотя бы одно соответствие, попадающее в красный раздел (таблица выше), то вы не соответствуете стандарту.

Чтобы было проще, снова для наглядности возьмем правило 1.1 со стандартным значением категории, равным Обязательно.

Смотрим на таблицу и видим, что допустимыми значениями соответствия для Required являются Compliance или Deviations (немного подробнее о значении этих статусов будет в пункте ниже).

То есть, если ваш проект соответствует правилу 1.1, или соответствует, но с отклонениями, то все в порядке и можно смотреть следующее правило.

Если есть хотя бы одно совпадение с «Нарушения» или «Отключено», значит, проект не соответствует стандарту MISRA C 2012. Если все правила имеют только допустимые значения, то поздравляем, ваш проект соответствует стандарту MISRA C 2012. Если у вас есть совпадение, попадающее в красную секцию (таблица выше), значит, вы не соответствуете стандарту.

Собственно, это все основные вещи, которые вам нужно знать для создания отчета о соответствии MISRA.

Формирование отчета MISRA Compliance в PVS-Studio

Для формирования отчета необходимо воспользоваться утилитой PlogConverter.exe или плог-конвертер в Windows и Unix соответственно.

Эти утилиты также распространяются в составе дистрибутивов.

На момент написания статьи PVS-Studio умеет формировать отчет о соответствии только стандарту MISRA C 2012. Также весь описанный здесь функционал будет доступен с версии PVS-Studio 7.15 или по запросу.

бета версия.

Для создания отчета о соответствии MISRA необходимо выполнить анализ.

О том, как это сделать в Windows, можно прочитать здесь.

здесь , а для Unix - здесь .

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

Затем воспользуемся одной из утилит преобразования отчетов.

Пример запуска PlogConverter.exe:

  
  
   

"C:\Program Files (x86)\PVS-Studio\PlogConverter.exe" "path_to_report_file" \ -t MisraCompliance -o "path_to_MISRA_report" --grp "path_to_grp.txt"

И пример команды для plog-конвертера:

plog-converter "path_to_report_file" -t misra_compliance \ -o "path_to_MISRA_report" --grp "path_to_grp.txt"

Сам отчет представляет собой HTML-страницу, удобную для печати.

Вот пример отчета, когда проект не соответствует MISRA C 2012:

Зачем нужен отчет MISRA Compliance и как его получить в PVS-Studio?

Отчет, когда проект соответствует MISRA C 2012:

Зачем нужен отчет MISRA Compliance и как его получить в PVS-Studio?

Итак, пройдемся по столбцам:

  • Руководство содержит ряд правил и директив стандарта MISRA C;
  • Категория содержит категорию правила или директивы, указанную в стандарте;
  • Рекатегоризация содержит категорию после перекатегоризации в соответствии с ВРП;
  • Согласие содержит статус соответствия проверяемого кода правилу.

    Красным выделено то, что препятствует соблюдению стандарта MISRA C 2012.

В нашем случае ВРП текст -файл.

Пример содержимого файла с допустимыми переходами:

Rule 2.1 = Mandatory Rule 8.13 = Required Directive 4.3 = Mandatory Rule 2.6 = Disapplied

Если этот файл содержит более раннюю версию, утилита выдаст сообщение об ошибке и не сформирует отчет. Исключением является категория «Рекомендации», которую можно понизить до «Отключено».

Во всяком случае, вот как расположены категории от наиболее важного к наименее важному:

Зачем нужен отчет MISRA Compliance и как его получить в PVS-Studio?

Проверяемые статусы соответствия нормам означают следующее:

  • Соответствует — в проекте нет отклонений от этого правила;
  • Отклонения – отклонения от правила выявляются и документируются.

    Чтобы утилита поняла необходимость игнорировать конкретное предупреждение, его следует пометить как ложное ( Отметить как ложную тревогу ).

    В скобках указано количество подтвержденных отклонений;

  • Нарушения – имеется хотя бы одно недокументированное отклонение от правила.

    Количество таких отклонений указано в скобках.

    Если помимо «Нарушений» для правила есть еще предупреждения «Отклонения», то будут отображены оба статуса;

  • Отключено – категория отключена и никак не будет учитываться.

    Применимо только к консультативным категориям;

  • Не поддерживается – данное правило не поддерживается анализатором.

    На момент написания статьи PVS-Studio уже покрыл 60% стандарта MISRA C 2012. Но мы не останавливаемся на достигнутом и планируем к концу года довести этот показатель до 85%.

    О текущем положении дел с MISRA можно прочитать здесь.

    здесь .

Ну и самое главное, это заключение о соответствии или несоответствии проекта стандарту MISRA C 2012. Код соответствует стандарту, если:
  • Все обязательные правила имеют статус «Соответствует»;
  • Все обязательные правила имеют статус «Соответствует» и/или «Отклонений»;
  • Консультативные правила могут иметь любой статус;
  • Неприменимые правила игнорируются.



Заключение

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



Дополнительные ссылки

  1. Что такое МИСРА и как его приготовить .

  2. Классификация предупреждений PVS-Studio по стандартам: MISRA C, MISRA C++.

    .

Если вы хотите поделиться этой статьей с англоязычной аудиторией, воспользуйтесь ссылкой для перевода: Николай Миронов.

Зачем нужен отчет MISRA Compliance и как его создать в PVS-Studio? .

Теги: #информационная безопасность #Программирование микроконтроллеров #C++ #pvs-studio #embedded #safety #misra #misra c #misra Compliance #misra Compliance

Вместе с данным постом часто просматривают: