Если вы знаете о MISRA не понаслышке и хотели бы понять, соответствует ли ваш проект какому-либо стандарту MISRA, то решение есть.
Его название — соответствие MISRA. Недавно 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 позволяет изменить (перекатегоризировать) уровень рекомендаций, хотя это и не требуется.
Это делается каждым конкретным пользователем для конкретного проекта в соответствии с GRP (Guideline Recategorization Plan).
GRP — это действительный набор преобразований с одного уровня на другой.
Вот как это выглядит в виде таблицы:
А чтобы было проще, приведем пример.
Допустим, у нас есть правило 1.1, уровень которого — «Обязательный».
Согласно таблице мы можем повысить уровень предупреждения до Обязательного или оставить его без изменений.
Это представлено зелеными ячейками.
Однако понижение уровня до «Рекомендованного» или «Отключенного» не допускается.
Это показано в красных клетках.
На основе полученных категорий можно указать соответствия правилам.
Возможные варианты сопоставления категорий MISRA выглядят следующим образом:
Эта таблица используется для определения того, соответствует ли ваш проект стандарту 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, можно прочитать здесь.
Обратите внимание, что вы должны включить Все диагностика, связанная с MISRA. В противном случае вы добровольно сократите покрытие MISRA. Как проверить, включены ли все правила, описано в предоставленных ссылках на документацию по анализу.
Затем воспользуемся одной из утилит преобразования отчетов.
Пример запуска PlogConverter.exe:
И пример команды для plog-конвертера:"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-converter "path_to_report_file" -t misra_compliance \
-o "path_to_MISRA_report" --grp "path_to_grp.txt"
Сам отчет представляет собой HTML-страницу, удобную для печати.
Вот пример отчета, когда проект не соответствует MISRA C 2012:
Отчет, когда проект соответствует MISRA C 2012:
Итак, пройдемся по столбцам:
- Руководство содержит ряд правил и директив стандарта MISRA C;
- Категория содержит категорию правила или директивы, указанную в стандарте;
- Рекатегоризация содержит категорию после перекатегоризации в соответствии с ВРП;
- Согласие содержит статус соответствия проверяемого кода правилу.
Красным выделено то, что препятствует соблюдению стандарта MISRA C 2012.
Пример содержимого файла с допустимыми переходами: Rule 2.1 = Mandatory
Rule 8.13 = Required
Directive 4.3 = Mandatory
Rule 2.6 = Disapplied
Если этот файл содержит более раннюю версию, утилита выдаст сообщение об ошибке и не сформирует отчет. Исключением является категория «Рекомендации», которую можно понизить до «Отключено».
Во всяком случае, вот как расположены категории от наиболее важного к наименее важному:
Проверяемые статусы соответствия нормам означают следующее:
- Соответствует — в проекте нет отклонений от этого правила;
- Отклонения – отклонения от правила выявляются и документируются.
Чтобы утилита поняла необходимость игнорировать конкретное предупреждение, его следует пометить как ложное ( Отметить как ложную тревогу ).
В скобках указано количество подтвержденных отклонений;
- Нарушения – имеется хотя бы одно недокументированное отклонение от правила.
Количество таких отклонений указано в скобках.
Если помимо «Нарушений» для правила есть еще предупреждения «Отклонения», то будут отображены оба статуса;
- Отключено – категория отключена и никак не будет учитываться.
Применимо только к консультативным категориям;
- Не поддерживается – данное правило не поддерживается анализатором.
На момент написания статьи PVS-Studio уже покрыл 60% стандарта MISRA C 2012. Но мы не останавливаемся на достигнутом и планируем к концу года довести этот показатель до 85%.
О текущем положении дел с MISRA можно прочитать здесь.
здесь .
- Все обязательные правила имеют статус «Соответствует»;
- Все обязательные правила имеют статус «Соответствует» и/или «Отклонений»;
- Консультативные правила могут иметь любой статус;
- Неприменимые правила игнорируются.
Заключение
Не стесняйтесь попробовать новый отчет. Если у вас возникли трудности, проблемы или пожелания, обязательно напишите чтобы поддержать нас .
Дополнительные ссылки
- Что такое МИСРА и как его приготовить .
- Классификация предупреждений PVS-Studio по стандартам: MISRA C, MISRA C++.
Зачем нужен отчет MISRA Compliance и как его создать в PVS-Studio? .
Теги: #информационная безопасность #Программирование микроконтроллеров #C++ #pvs-studio #embedded #safety #misra #misra c #misra Compliance #misra Compliance
-
9 Самых Популярных Php-Фреймворков
19 Oct, 24 -
Открытый Процесс Проекта
19 Oct, 24 -
Некролог Мертвых Устройств
19 Oct, 24