Сводные таблицы информации о податливости MISRA C:2012

Сводные таблицы податливости

MathWorks® оценивает код С, сгенерированный Embedded Coder® от Simulink® и Stateflow® против MISRA C:2012, кодирующего стандарты. Результаты этого усилия доступны в этих сводных таблицах податливости. Эти таблицы идентифицируют:

  • Методы раньше получали податливость:

    • Совместимый: Податливость к правилу/директиве достигается через соблюдение процесса генерации кода, руководств по моделированию или проверок Model Advisor. Когда применимо, существуют пояснительные записки, которые предоставляют информацию, относящуюся к методам податливости или действиям, которые можно выполнить, чтобы удовлетворить директиве или правилу.

    • Отклонение: правило или директива несовместимы.

  • Поддерживает ли Средство проверки Polyspace® MISRA C:2012 правило или директиву.

Можно использовать эти таблицы при подготовке оператора податливости 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) для пользовательских функций, когда нет никакого знания о том, содержит ли возвращаемое значение информацию об ошибке.

"Стандарт C среда" правила MISRA C:2012

ПравилоКатегорияПодатливостьПоддержка Polyspace?
1.1НеобходимыйСовместимыйДа
1.3НеобходимыйСовместимыйДа

"Неиспользованный код" правила MISRA C:2012

ПравилоКатегорияПодатливостьПоддержка Polyspace?
2.1Необходимый

Совместимый:

Да
2.2НеобходимыйСовместимыйДа

"Комментарии" правила MISRA C:2012

ПравилоКатегорияПодатливостьПоддержка Polyspace?
3.1Необходимый

Совместимый:

Да
3.2НеобходимыйСовместимыйДа

"Наборы символов и лексические соглашения" правила MISRA C:2012

ПравилоКатегорияПодатливостьПоддержка Polyspace?
4.1НеобходимыйСовместимыйДа

"Идентификаторы" правила MISRA C:2012

"Типы" правила MISRA C:2012

ПравилоКатегорияПодатливостьПоддержка Polyspace?
6.1Необходимый

Совместимый:

Да
6.2Необходимый

Совместимый:

Да

"Литералы и константы" правила 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НеобходимыйСовместимыйДа

"Инициализация" правила MISRA C:2012

ПравилоКатегорияПодатливостьПоддержка Polyspace?
9.1Обязательный

Совместимый:

Да
9.4НеобходимыйСовместимыйДа
9.5НеобходимыйСовместимыйДа

"Существенная модель типа" правила MISRA C:2012

ПравилоКатегорияПодатливостьПоддержка Polyspace?
10.2НеобходимыйСовместимыйДа

"Преобразование типа указателя" правила MISRA C:2012

ПравилоКатегорияПодатливостьПоддержка Polyspace?
11.1НеобходимыйСовместимыйДа
11.2НеобходимыйСовместимыйДа
11.3Необходимый

Совместимый:

Да
11.6НеобходимыйСовместимыйДа
11.7НеобходимыйСовместимыйДа
11.8Необходимый

Совместимый:

Да

"Выражения" правила MISRA C:2012

ПравилоКатегорияПодатливостьПоддержка Polyspace?
12.2НеобходимыйСовместимыйДа

"Побочные эффекты" правила MISRA C:2012

ПравилоКатегорияПодатливостьПоддержка Polyspace?
13.1НеобходимыйСовместимыйДа
13.2Необходимый

Совместимый:

Да
13.5Необходимый

Совместимый:

Отклонение:

Да
13.6ОбязательныйСовместимыйДа

"Управляйте выражениями оператора" правила MISRA C:2012

ПравилоКатегорияПодатливостьПоддержка Polyspace?
14.2Необходимый

Совместимый:

Да
14.3Необходимый

Совместимый:

Да

"Поток управления" правила MISRA C:2012

ПравилоКатегорияПодатливостьПоддержка Polyspace?
15.2НеобходимыйСовместимыйДа
15.3НеобходимыйСовместимыйДа
15.6НеобходимыйСовместимыйДа
15.7НеобходимыйСовместимыйДа

"Операторы switch" Правила MISRA C:2012

ПравилоКатегорияПодатливостьПоддержка Polyspace?
16.2НеобходимыйСовместимыйДа
16.3НеобходимыйСовместимыйДа
16.4Необходимый

Совместимый:

Да
16.5НеобходимыйСовместимыйДа
16.6НеобходимыйСовместимыйДа
16.7НеобходимыйСовместимыйДа

"Функции" правила MISRA C:2012

ПравилоКатегорияПодатливостьПоддержка Polyspace?
17.1НеобходимыйСовместимыйДа
17.2Необходимый

Совместимый:

Да
17.3ОбязательныйСовместимыйДа
17.4ОбязательныйСовместимыйДа
17.6ОбязательныйСовместимыйДа

"Указатели и массивы" правила MISRA C:2012

ПравилоКатегорияПодатливостьПоддержка Polyspace?
18.1НеобходимыйСовместимыйДа
18.2НеобходимыйСовместимыйДа
18.3НеобходимыйСовместимыйДа
18.6НеобходимыйСовместимыйДа
18.7НеобходимыйСовместимыйДа
18.8НеобходимыйСовместимыйДа

"Перекрывая устройство хранения данных" правила MISRA C:2012

ПравилоКатегорияПодатливостьПоддержка Polyspace?
19.1ОбязательныйСовместимыйДа

"Предварительно обрабатывая директивы" правила MISRA C:2012

ПравилоКатегорияПодатливостьПоддержка 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НеобходимыйСовместимыйДа

"Ресурсы" правила MISRA C:2012

ПравилоКатегорияПодатливостьПоддержка Polyspace?
22.1НеобходимыйСовместимыйДа
22.2ОбязательныйСовместимыйДа
22.3НеобходимыйСовместимыйДа
22.4ОбязательныйСовместимыйДа
22.5ОбязательныйСовместимыйДа
22.6ОбязательныйСовместимыйДа

Пояснительные записки

На эти пояснительные записки ссылаются из Сводных таблиц информации о Податливости MISRA C:2012.

Пояснительная записка для директивы 1.1

Информация о заданном реализацией поведении для Embedded Coder доступна в, Конфигурируют Опции Среды выполнения. Документация компилятора вне осциллографа.

Кодирование набора символов управляемо при помощи SavedCharacterEncoding параметр модели. Для получения дополнительной информации смотрите slCharacterEncoding.

Сконфигурируйте метод целочисленного деления в диалоговом окне Model Configuration Parameters на панели Hardware Implementation. Для получения дополнительной информации смотрите, Конфигурируют Опции Среды выполнения

Embedded Coder генерирует #pragma когда пользователь:

В обоих экземплярах вы ответственны за документирование надлежащего использования #pragma. Для получения дополнительной информации смотрите Данные об Управлении и Функциональное Размещение в Памяти Вставкой Прагм.

Включить генерацию битовых полей:

  1. Выберите по крайней мере один из этих параметров конфигурации модели:

  2. Создайте пользовательский класс памяти с заданными битовыми полями. Смотрите Создают Классы памяти при помощи Custom Storage Class Designer для получения дополнительной информации.

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

Пояснительная записка для директивы 3.1 MISRA

Можно соединить элементы модели требований. Эти ссылки включены в сгенерированный код C, чтобы обеспечить трассируемость из документа требований к элементам модели, и к сгенерированному коду. Для получения дополнительной информации, Ссылки Simulink Requirements вида на море, Связанные с Элементами модели и Блоками Ссылки и Требованиями (Simulink Requirements).

Пояснительная записка для директивы 4.1

Можно использовать Polyspace Bug Finder™, чтобы идентифицировать ошибки времени выполнения и Polyspace Code Prover™, чтобы доказать отсутствие ошибок времени выполнения. Для получения информации см.:

Simulink Design Verifier может использоваться, чтобы обнаружить ошибки проектирования на уровне модели. Для получения дополнительной информации смотрите Запуск Анализ Поиска ошибок проектирования (Simulink Design Verifier).

Пояснительная записка для директивы 4.3

Embedded Coder непосредственно не вызывает код ассемблера. Можно добавить вызовы функций ассемблера через S-функции, заменяющие библиотеки кода, Stateflow, и в блоках MATLAB®. Эти вызовы документируются как вызовы Внешних Функций C. В этих случаях вы ответственны за инкапсуляцию.

Для получения дополнительной информации см.:

Пояснительная записка для директивы 4.6

Embedded Coder заменяет типы основных данных на типы определений типов, которые совместимы с Директивой 4.6. Инструкция не требуется, потому что это поведение является поведением по умолчанию в Embedded Coder. Для получения дополнительной информации смотрите Замену и Переименуйте Типы данных, чтобы Соответствовать Кодированию Стандартов и Определений типов.

Пояснительная записка для директивы 4.11

Требованиями этой директивы удовлетворяют:

“Продемонстрируйте статически, что входные параметры никогда не могут принимать недопустимые значения”.

Можно использовать Polyspace Code Prover, чтобы анализировать области значений параметра и доказать отсутствие ошибок времени выполнения, вызванных значениями из области значений. Для получения дополнительной информации смотрите Анализ Polyspace Запуска Кода, Сгенерированного с Embedded Coder (Polyspace Code Prover).

Пояснительная записка для правила 2.1

Embedded Coder не проверяет определяемый пользователем код из Stateflow. Необходимо заботиться о нарушениях, о которых сообщают.

Пояснительная записка для правил 5.1, 5.2, 5.4, 5.5, 5.6, 5.7, и 5.8

Embedded Coder конфигурируем, чтобы ограничить количество символов, наложенных реализацией. Для получения дополнительной информации смотрите Максимальную длину идентификатора.

Гарантировать уникальные имена для различных типов переменных (локальные переменные осциллографа, переменные глобальной области видимости, макросы, и так далее), реализуют соглашение о присвоении имен. Для получения дополнительной информации смотрите Параметры конфигурации Модели: Символы Генерации кода.

Пояснительная записка для правила 8.12

Embedded Coder поддерживает использование перечислимых данных. Файл, используемый, чтобы задать перечисление, может быть или вручную или автоматически сгенерирован. Файлы, задающие перечисления, сгенерированные Embedded Coder, совместимы с Правилом 8.12 MISRA C:2012 проектом. Если вы вручную создаете файл определения, вы ответственны за обеспечение податливости. Для получения дополнительной информации смотрите Использование Перечислимые Данные в Моделях Simulink.

Пояснительная записка для правил 10.1 и 10.2

Embedded Coder непосредственно не создает данные char типа. Данные символьного типа могут быть введены пользовательскими S-функциями, заменяющими библиотеками кода и пользовательскими классами памяти. В этом случае ограничьте использование простого char к:

  • Простой символьный тип для символьных значений

  • Подписанный и символьный тип без знака для числовых значений