С помощью Polyspace ® можно проверить код C/C + + на наличие нарушений правил кодирования, таких как правила MISRA C ®: 2012. Соблюдение правил кодирования позволяет уменьшить количество дефектов и повысить качество кода.
Polyspace может обнаружить нарушения этих правил:
MISRA C:2004
MISRA C:2012
MISRA ® C++
JSF AV C++
AUTOSAR C++ 14 (только для поиска ошибок)
CERT ® C (только для поиска ошибок)
CERT C++ (только для поиска ошибок)
ISO ®/IEC TS 17961 (только для поиска ошибок)
Рекомендации
![]()
![]()

![]()
Укажите правила кодирования с помощью опций анализа Polyspace. При запуске функции «Поиск ошибок» или «Проверка кода» в ходе анализа в дополнение к другим проверкам выполняется поиск нарушений правил кодирования. Можно отключить другие проверки и искать только нарушения правил кодирования.
В интерфейсе пользователя Polyspace (продукты для настольных ПК) параметры находятся на панели Конфигурация (Configuration) в узле Стандарты кодирования и метрики кода (Coding Standards & Code Metrics).
Для кода C используйте одну из следующих опций:
Для сгенерированного кода включите параметр, специфичный для сгенерированного кода.
Для сгенерированного кода включите параметр, специфичный для сгенерированного кода.
Для кода C++ используйте одну из следующих опций:
Можно указать предопределенное подмножество правил, например, mandatory для C:2012 MISRA. Эти подмножества обычно определяются стандартом.
Можно также определить соглашения об именовании для идентификаторов с помощью регулярных выражений. См. раздел Создание пользовательских правил кодирования.
![]()
Вместо предопределенных подмножеств можно указать собственное подмножество правил из стандарта кодирования.
![]()
Интерфейс пользователя (только для настольных ПК)
Выберите стандарт кодирования. В раскрывающемся списке подмножества правил выберите from-file. Нажмите кнопку Изменить.
В окне выбора результатов стандарт кодирования выделен на левой панели. На правой панели выберите правила, которые необходимо включить в анализ.
При выборе команды «Рекомендации» > «Проверка сложности программного обеспечения» просмотрите их пороговые значения. Если пороги по умолчанию неприемлемы, укажите подходящий порог в столбце Порог (Threshold). Смотрите.
При выборе Настраиваемые правила (Custom rules) просмотрите Шаблон (Pattern) и Соглашение (Convention) для правил. Посмотрите Check custom rules (-custom-rules) (Polyspace Bug Finder Access).
![]()

![]()
При сохранении выбранных правил конфигурация сохраняется в XML-файле, который можно повторно использовать для нескольких анализов. Один и тот же файл содержит правила, выбранные для всех стандартов кодирования. Этот файл можно повторно использовать в нескольких проектах для применения общих стандартов кодирования в коллективе или организации. Чтобы повторно использовать этот файл в другом проекте в интерфейсе пользователя Polyspace, выполните следующие действия.
Выберите стандарт кодирования в конфигурации проекта. В раскрывающемся списке подмножества правил выберите from-file.
Щелкните Изменить (Edit) и перейдите к расположению файла. Либо введите имя файла в качестве аргумента для опции Set checkers by file (-checkers-selection-file).
![]()
Командная строка. С помощью настольных продуктов Polyspace можно создать стандартный XML-файл кодирования в интерфейсе пользователя, а затем использовать этот файл для анализа командной строки. Предоставить этот XML-файл с параметром Set checkers by file (-checkers-selection-file).
С помощью продуктов Polyspace Server необходимо создать стандартный XML-код с нуля. В зависимости от стандарта, который требуется включить, создайте записываемую копию одного из файлов в и отключите правила, используя записи в XML-файле (все правила из стандарта включены в шаблоне). Здесь, polyspaceserverroot\help\toolbox\polyspace_bug_finder_server\examples\coding_standards_XML является корневой папкой установки для продуктов Polyspace Server, например, polyspaceserverrootC:\Program Files\Polyspace Server\R2019a.
Например, чтобы отключить MISRA C:2012 правило 8.1, используйте эту запись в копии файла misra_c_2012_rules.xml:
<standard name="MISRA C:2012">
...
<section name="8 Declarations and definitions">
...
<check id="8.1" state="off">
</check>
...
</section>
...
</standard>При использовании контрольных элементов Guideline укажите их порог между threshold теги. Например, для активации средства проверки Cyclomatic Complexity Exceeds Threshold и установите порог для средства проверки равным пяти, используйте эту запись в копии guidelines.xml:
<check id="SC18" state="on">
<threshold>5</threshold>
</check>Чтобы использовать XML-файл для анализа C:2012 MISRA в Bug Finder, введите:
polyspace-bug-finder -sources filename -misra3 from-file -checkers-selection-file misra_c_2012_rules.xml
Полный список идентификаторов правил и имен разделов см. в следующих разделах:
Примечание
Формат XML файла конфигурации средства проверки может изменяться в будущих версиях.
![]()
Для проверки только стандартов кодирования:
В Bug Finder отключите проверку дефектов. Использовать опцию Find defects (-checkers).
В программе Code Prover проверьте только соответствие исходного кода. Использовать опцию Verification level (-to)(Доказательство кода Polyspace).
Эти правила проверяются на более поздних стадиях анализа доказывающего кода: MISRA C:2004 правила 9.1, 13.7 и 21.1 и MISRA C:2012 правила 2.2, 9.1, 14.3 и 18.1. Если остановить программу проверки кода при проверке соответствия источника, анализ может не обнаружить всех нарушений этих правил. Можно также увидеть разницу в результатах на основе выбора опции. Verification level (-to)(Доказательство кода Polyspace). Например, возможно, что средство проверки кода подозревает в первом проходе, что переменная может быть неинициализирована, но доказывает во втором проходе, что переменная инициализирована. В этом случае вы видите нарушение правила 9.1 MISRA C:2012 в первом прохождении, но не во втором прохождении.
![]()
![]()

![]()
После анализа на панели Список результатов (Results List) появятся нарушения стандартов кодирования. Выберите нарушение, чтобы просмотреть дополнительные сведения на панели Сведения о результате (Result Details) и исходный код на панели Источник (Source).
Нарушения стандартов кодирования обозначены в исходном коде
значком.
Дополнительные шаги см. в разделе Просмотр результатов анализа.
![]()
Отчеты можно создавать с использованием шаблонов, явно определенных для стандартов кодирования. Используйте CodingStandards шаблон. Этот шаблон:
Сообщает только о стандартных нарушениях в результатах анализа и пропускает другие типы результатов, такие как дефекты, ошибки во время выполнения или метрики кода.
Создание отдельной главы в отчете для каждого стандарта кодирования. в этой главе представлен обзор всех нарушений стандарта, а затем перечислены все нарушения.
Чтобы указать шаблон отчета, используйте опцию Bug Finder and Code Prover report (-report-template).
![]()