С Polyspace®, можно проверить код C/C + + на нарушения правил кодирования, таких как MISRA C®: правила 2012 года. Соблюдение правил кодирования может уменьшить количество дефектов и улучшить качество вашего кода.
Polyspace может обнаружить нарушения этих правил:
MISRA- C:2004
MISRA- C:2012
MISRA® C++
JSF AV C++
AUTOSAR C++ 14 (только Bug Finder)
СВИДЕТЕЛЬСТВО® C (только Bug Finder)
CERT C++ (только Bug Finder)
ISO®/ IEC TS 17961 (только для Bug Finder)
Рекомендации
![]()
![]()

![]()
Задайте правила кодирования с помощью опций анализа Polyspace. Когда вы запускаете Bug Finder или Code Prover, анализ ищет нарушения правил кодирования в дополнение к другим проверкам. Можно отключить другие проверки и искать только нарушения правил кодирования.
В пользовательском интерфейсе Polyspace (продукты для настольных ПК) опции находятся на панели Configuration под узлом Coding Standards & Code Metrics.
Для кода С используйте один из следующих опций:
Для сгенерированного кода включите опцию, характерный для сгенерированного кода.
Для сгенерированного кода включите опцию, характерный для сгенерированного кода.
Для кода С++ используйте один из следующих опций:
Можно задать предопределенный подмножество правил, например mandatory для C:2012 MISRA. Эти подмножества обычно определяются стандартом.
Можно также задать соглашения об именовании для идентификаторов с помощью регулярных выражений. См. «Создание пользовательских правил кодирования».
![]()
Вместо предопределенных подмножеств можно задать собственный подмножество правил из стандарта кодирования.
![]()
Пользовательский интерфейс (только для настольных Продуктов)
Выберите стандарт кодирования. Из выпадающего списка подмножества правил выберите from-file. Нажмите Edit.
В Findings selection окне стандарт кодирования подсвечивается на левой панели. На правой панели выберите правила, которые необходимо включить в анализ.
При выборе Guidelines > Software Complexity шашек проверьте их пороги. Если пороги по умолчанию недопустимы, укажите подходящий порог в столбце Threshold. См.
При выборе Custom правил проверьте 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 вы должны создать стандарт кодирования 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 теги. Например, чтобы активировать чекер и установить порог для чекера равным пяти, используйте эту запись в копии 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).
Эти правила проверяются на более поздних стадиях анализа Code Prover: MISRA C:2004 правила 9.1, 13.7 и 21.1, и MISRA C:2012 правила 2.2, 9.1, 14.3 и 18.1. Если остановить Code Prover при проверке податливости исходного кода, анализ может не обнаружить всех нарушений этих правил. Вы также можете увидеть различие в результатах на основе вашего выбора для опции Verification level (-to). Например, возможно, что Code Prover подозревает в первом проходе, что переменная может быть неинициализирована, но во втором проходе доказывает, что переменная инициализирована. В этом случае вы видите нарушение MISRA C:2012 правила 9.1 в первом проходе, но не во втором проходе.
![]()
![]()

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