MathWorks ® оценивает код C, созданный Embedded Coder ® от Simulink ® и Stateflow ®, в соответствии со стандартами кодирования MISRA C:2012. Результаты этой работы доступны в этих сводных таблицах соответствия. Эти таблицы идентифицируют:
Методы, используемые для достижения соответствия:
Соответствие: Соответствие правилу/директиве достигается за счет соответствия процессу создания кода, рекомендациям по моделированию или проверкам Model Advisor. Там, где это применимо, имеются пояснительные примечания, содержащие информацию, относящуюся к методам соответствия или действиям, которые можно выполнить для выполнения директивы или правила.
Отклонение: правило или директива несовместимы.
Поддерживает ли Polyspace ® MISRA C:2012 Checker правило или директиву.
Эти таблицы можно использовать при подготовке заявления MISRA C:2012 о соответствии проекта требованиям раздела 5.3 Руководства MISRA C:2012 по использованию языка C в критических системах. Эти таблицы соответствуют опубликованным таблицам правил и директив MISRA C:2012. Они основаны только на обязательных и обязательных категориях (не для категорий «Рекомендации» и «Читаемость»).
Директивы MISRA C:2012 «Реализация»
| Директива | Категория | Соблюдение | Поддержка Polyspace? |
|---|---|---|---|
| 1.1 | Необходимый |
Соответствует требованиям:
| Да, частично поддерживается |
Директивы MISRA C:2012 «Компиляция и сборка»
| Директива | Категория | Соблюдение | Поддержка Polyspace? |
|---|---|---|---|
| 2.1 | Необходимый | Соответствующий | Да |
Директивы MISRA C:2012 «Отслеживание требований»
| Директива | Категория | Соблюдение | Поддержка Polyspace? |
|---|---|---|---|
| 3.1 | Необходимый |
Соответствует требованиям:
| Нет |
Директивы MISRA C:2012 «Дизайн кода»
| Директива | Категория | Соблюдение | Поддержка Polyspace? |
|---|---|---|---|
| 4.1 | Необходимый |
Соответствует требованиям:
| Да |
| 4.3 | Необходимый |
Соответствует требованиям:
| Нет |
| 4.6 | Необходимый |
Неприменимо. | Н/Д |
| 4.7 | Необходимый |
Соответствует требованиям:
Отклонение:
| Да [а] |
| 4.10 | Необходимый | Соответствующий | Да |
| 4.11 | Необходимый |
Соответствует требованиям:
| Да |
| 4.12 | Необходимый |
Соответствует требованиям:
| Нет |
[a] Средство проверки MISRA C:2012 Polyspace может пометить директиву 4.7 как нарушение правила 17.7 (Polyspace Bug Finder) для пользовательских функций, если нет информации о том, содержит ли возвращаемое значение информацию об ошибке. | |||
Правила MISRA C:2012 «Стандартная среда C»
| Правило | Категория | Соблюдение | Поддержка Polyspace? |
|---|---|---|---|
| 1.1 | Необходимый | Соответствующий | Да |
| 1.3 | Необходимый | Соответствующий | Да |
Правила C:2012 MISRA «Неиспользуемый код»
| Правило | Категория | Соблюдение | Поддержка Polyspace? |
|---|---|---|---|
| 2.1 | Необходимый |
Соответствует требованиям:
| Да |
| 2.2 | Необходимый | Соответствующий | Да |
«Комментарии» MISRA C:2012 Правила
| Правило | Категория | Соблюдение | Поддержка Polyspace? |
|---|---|---|---|
| 3.1 | Необходимый |
Соответствует требованиям:
| Да |
| 3.2 | Необходимый | Соответствующий | Да |
Правила C:2012 MISRA «Наборы символов и лексические условные обозначения»
| Правило | Категория | Соблюдение | Поддержка Polyspace? |
|---|---|---|---|
| 4.1 | Необходимый | Соответствующий | Да |
Правила C:2012 MISRA «идентификаторы»
| Правило | Категория | Соблюдение | Поддержка Polyspace? |
|---|---|---|---|
| 5.1 | Необходимый |
Соответствует требованиям:
| Да |
| 5.2 | Необходимый |
Соответствует требованиям:
| Да |
| 5.4 | Необходимый |
Соответствует требованиям:
| Да |
| 5.5 | Необходимый |
Соответствует требованиям:
| Да |
| 5.6 | Необходимый |
Соответствует требованиям:
| Да |
| 5.7 | Необходимый |
Соответствует требованиям:
| Да |
| 5.8 | Необходимый |
Соответствует требованиям:
| Да |
«Типовые» правила MISRA C:2012
«Литералы и константы» MISRA C:2012 Правила
| Правило | Категория | Соблюдение | Поддержка Polyspace? |
|---|---|---|---|
| 7.1 | Необходимый | Соответствующий | Да |
| 7.2 | Необходимый | Соответствующий | Да |
| 7.4 | Необходимый | Соответствующий | Да |
«Декларации и определения» MISRA C:2012 Правила
| Правило | Категория | Соблюдение | Поддержка Polyspace? |
|---|---|---|---|
| 8.1 | Необходимый | Соответствующий | Да |
| 8.2 | Необходимый | Соответствующий | Да |
| 8.3 | Необходимый | Соответствующий | Да |
| 8.6 | Необходимый | Соответствующий | Да |
| 8.8 | Необходимый | Соответствующий | Да |
| 8.10 | Необходимый | Соответствующий | Да |
| 8.12 | Необходимый |
Соответствует требованиям:
| Да |
| 8.14 | Необходимый | Соответствующий | Да |
Правила C:2012 MISRA «инициализации»
| Правило | Категория | Соблюдение | Поддержка Polyspace? |
|---|---|---|---|
| 9.1 | Обязательный |
Соответствует требованиям:
| Да |
| 9.4 | Необходимый | Соответствующий | Да |
| 9.5 | Необходимый | Соответствующий | Да |
Правила MISRA C:2012 «Модель существенного типа»
| Правило | Категория | Соблюдение | Поддержка Polyspace? |
|---|---|---|---|
| 10.2 | Необходимый | Соответствующий | Да |
Правила C:2012 MISRA «Преобразование типа указателя»
Правила C:2012 MISRA «Выражения»
| Правило | Категория | Соблюдение | Поддержка Polyspace? |
|---|---|---|---|
| 12.2 | Необходимый | Соответствующий | Да |
«Побочные эффекты» MISRA C:2012 Правила
| Правило | Категория | Соблюдение | Поддержка Polyspace? |
|---|---|---|---|
| 13.1 | Необходимый | Соответствующий | Да |
| 13.2 | Необходимый |
Соответствует требованиям:
| Да |
| 13.5 | Необходимый |
Соответствует требованиям:
Отклонение:
| Да |
| 13.6 | Обязательный | Соответствующий | Да |
Правила MISRA C:2012 «Выражения управляющих операторов»
Правила MISRA C:2012 «Поток управления»
| Правило | Категория | Соблюдение | Поддержка Polyspace? |
|---|---|---|---|
| 15.2 | Необходимый | Соответствующий | Да |
| 15.3 | Необходимый | Соответствующий | Да |
| 15.6 | Необходимый | Соответствующий | Да |
| 15.7 | Необходимый | Соответствующий | Да |
Правила C:2012 MISRA «Операторы переключения»
Правила C:2012 MISRA «Функции»
Правила C:2012 MISRA «указатели и массивы»
| Правило | Категория | Соблюдение | Поддержка Polyspace? |
|---|---|---|---|
| 18.1 | Необходимый | Соответствующий | Да |
| 18.2 | Необходимый | Соответствующий | Да |
| 18.3 | Необходимый | Соответствующий | Да |
| 18.6 | Необходимый | Соответствующий | Да |
| 18.7 | Необходимый | Соответствующий | Да |
| 18.8 | Необходимый | Соответствующий | Да |
Правила MISRA C:2012 «Перекрывающееся хранилище»
| Правило | Категория | Соблюдение | Поддержка Polyspace? |
|---|---|---|---|
| 19.1 | Обязательный | Соответствующий | Да |
Правила C:2012 MISRA «Директивы предварительной обработки»
| Правило | Категория | Соблюдение | Поддержка Polyspace? |
|---|---|---|---|
| 20.2 | Необходимый | Соответствующий | Да |
| 20.3 | Необходимый | Соответствующий | Да |
| 20.4 | Необходимый | Соответствующий | Да |
| 20.6 | Необходимый | Соответствующий | Да |
| 20.7 | Необходимый | Соответствующий | Да |
| 20.9 | Необходимый | Соответствующий | Да |
| 20.11 | Необходимый | Соответствующий | Да |
| 20.12 | Необходимый | Соответствующий | Да |
| 20.13 | Необходимый | Соответствующий | Да |
| 20.14 | Необходимый | Соответствующий | Да |
«Стандартные библиотеки» MISRA C:2012 Правила
| Правило | Категория | Соблюдение | Поддержка Polyspace? |
|---|---|---|---|
| 21.1 | Необходимый | Соответствующий | Да |
| 21.2 | Необходимый |
Соответствует требованиям:
| Да |
| 21.3 | Необходимый |
Соответствует требованиям:
| Да |
| 21.4 | Необходимый | Соответствующий | Да |
| 21.5 | Необходимый | Соответствующий | Да |
| 21.6 | Необходимый |
Соответствует требованиям:
| Да |
| 21.7 | Необходимый | Соответствующий | Да |
| 21.8 | Необходимый | Соответствующий | Да |
| 21.9 | Необходимый | Соответствующий | Да |
| 21.10 | Необходимый | Соответствующий | Да |
| 21.11 | Необходимый | Соответствующий | Да |
| 21.12 | Необходимый | Соответствующий | Да |
Правила C:2012 MISRA «Ресурсы»
| Правило | Категория | Соблюдение | Поддержка Polyspace? |
|---|---|---|---|
| 22.1 | Необходимый | Соответствующий | Да |
| 22.2 | Обязательный | Соответствующий | Да |
| 22.3 | Необходимый | Соответствующий | Да |
| 22.4 | Обязательный | Соответствующий | Да |
| 22.5 | Обязательный | Соответствующий | Да |
| 22.6 | Обязательный | Соответствующий | Да |
Эти пояснительные примечания содержатся в сводных таблицах MISRA C:2012 Compliance Information Summary Tables.
Сведения об определяемом реализацией поведении встроенного кодера доступны в разделе Настройка параметров среды выполнения. Документация компилятора выходит за рамки области применения.
Кодировка набора символов управляется с помощью SavedCharacterEncoding параметр модели. Дополнительные сведения см. в разделе slCharacterEncoding.
Настройте метод целочисленного деления в диалоговом окне Параметры конфигурации модели (Model Configuration Parameters) на панели Реализация оборудования (Hardware Implementation). Дополнительные сведения см. в разделе Настройка параметров среды выполнения
Встроенный кодер генерирует #pragma когда пользователь:
В обоих случаях вы несете ответственность за документирование предполагаемого использования #pragma. Дополнительные сведения см. в разделе Управление данными и размещением функций в памяти путем вставки прагматиков.
Чтобы включить генерацию битовых полей, выполните следующие действия.
Выберите хотя бы один из следующих параметров конфигурации модели:
Создайте пользовательский класс хранения с определенными битовыми полями. Дополнительные сведения см. в разделе Создание классов хранения с помощью пользовательского конструктора классов хранения.
Если модель использует преобразование одного типа данных в другой, Polyspace Checker показывает нарушение Dir 1.1 из созданного кода модели. В этом случае нарушение, вытекающее из модели, не является проблемой, если вы документируете это явное преобразование в соответствии с рекомендациями MISRA.
Можно связать элементы модели требований. Эти связи включены в сгенерированный код C для обеспечения возможности отслеживания из документа требований, элементов модели и сгенерированного кода. Дополнительные сведения см. в разделе Просмотр ссылок на требования к Simulink, связанных с элементами модели, и блоков и требований к ссылкам (требования к Simulink).
Можно использовать Finder™ ошибки Polyspace для определения ошибок времени выполнения и Prover™ кода Polyspace для подтверждения отсутствия ошибок времени выполнения. Для получения дополнительной информации см.:
Настройка и выполнение анализа (средство проверки кода Polyspace)
Настройка и выполнение анализа (Polyspace Bug Finder)
Simulink Design Verifier можно использовать для обнаружения конструктивных ошибок на уровне модели. Дополнительные сведения см. в разделе Запуск анализа обнаружения ошибок конструкции (Simulink Design Verifier).
Встроенный кодер не вызывает непосредственно код языка сборки. Можно добавлять вызовы к функциям языка сборки через S-функции, библиотеки замены кода, Stateflow и в блоках MATLAB ®. Эти вызовы документируются как вызовы внешних функций C. В этих случаях вы несете ответственность за инкапсуляцию .
Для получения дополнительной информации см.:
Embedded Coder заменяет основные типы данных типизированными типами, совместимыми с директивой 4.6. Руководство не требуется, так как это поведение является поведением по умолчанию во встроенном кодере. Дополнительные сведения см. в разделе Замена и переименование типов данных для соответствия стандартам кодирования и типам.
Требования настоящей директивы удовлетворяют:
«Статически продемонстрировать, что входные параметры никогда не могут принимать недопустимые значения».
Средство проверки кода Polyspace можно использовать для анализа диапазонов параметров и подтверждения отсутствия ошибок времени выполнения, вызванных значениями вне диапазона. Дополнительные сведения см. в разделе Выполнение анализа Polyspace на коде, созданном с помощью встроенного кодера (средство проверки кода Polyspace).
Embedded Coder не проверяет пользовательский код из потока Stateflow. Вы должны позаботиться о нарушениях, о которых сообщалось.
Встроенный кодер настраивается для ограничения количества символов, налагаемых реализацией. Дополнительные сведения см. в разделе Максимальная длина идентификатора.
Чтобы обеспечить уникальные имена для различных типов переменных (локальные переменные области, глобальные переменные области, макросы и т. д.), реализуйте соглашение об именовании. Дополнительные сведения см. в разделе Параметры конфигурации модели: Символы генерации кода.
Встроенный кодер поддерживает использование перечисленных данных. Файл, используемый для определения перечисления, может быть создан вручную или автоматически. Файлы, определяющие перечисления, генерируемые встроенным кодером, по конструкции соответствуют правилу MISRA C:2012 8.12. При создании файла определения вручную вы несете ответственность за обеспечение соответствия требованиям. Дополнительные сведения см. в разделе Использование перечисляемых данных в моделях Simulink.
Встроенный кодер не создает непосредственно данные типа char. Данные типа char могут быть введены определяемыми пользователем S-функциями, библиотеками замены кода и пользовательскими классами хранения. В этом случае ограничьте использование простого символа:
Простой тип символа для символьных значений
Подписанный и неподписанный тип символа для числовых значений