Информационные

C:2012 Податливости MISRA Сводных данных таблицы

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

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

  • Методы, используемые для получения податливости:

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

    • Отклонение: Правило или директива не соответствует.

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

Эти таблицы можно использовать при подготовке оператора о податливости C:2012 MISRA для проекта в соответствии с требованиями раздела 5.3 C:2012 Руководства MISRA по использованию языка C в критических системах документа. Эти таблицы соответствуют опубликованным таблицам правил и C:2012 MISRA. Они основаны только на категориях «Обязательно» и «Обязательно» (не для категорий «Консультация» и «Чтение»).

«Реализация» MISRA C:2012 директивы

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

Соответствует:

Да, частично поддерживается

Директивы «Компиляция и сборка» MISRA C:2012

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

«Трассируемость требований» MISRA C:2012 директивы

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

Соответствует:

Нет

Коды Design» MISRA C:2012

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

Соответствует:

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

Соответствует:

Нет
4.6Необходимый

Не применяется.

Н/Д
4.7Необходимый

Соответствует:

Отклонение:

Да[a]
4.10НеобходимыйСоответствующийДа
4.11Необходимый

Соответствует:

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

Соответствует:

Нет

[a] Polyspace MISRA C:2012 Checker может отметить Директиву 4.7 как нарушение Правила 17.7 (Polyspace Bug Finder) для пользовательских функций, когда нет информации о том, содержит ли возвращаемое значение информацию об ошибке.

«Стандартное окружение C» MISRA C:2012 Правило

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

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

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

Соответствует:

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

«Комментарии» Правила C:2012 MISRA

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

Соответствует:

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

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

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

Правила C:2012 MISRA «Идентификаторы»

«Типы» MISRA C:2012 Правила

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

Соответствует:

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

Соответствует:

Да

Правила C:2012 MISRA «Литералы и константы»

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

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

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

Соответствует:

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

Соответствует:

Да

Правила C:2012 MISRA «Выражения»

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

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

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

Соответствует:

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

Соответствует:

Отклонение:

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

Правила C:2012 MISRA «Выражения оператора управления»

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

Соответствует:

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

Соответствует:

Да

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

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

Правила C:2012 MISRA «Switch options»

ПравилоКатегорияПодатливостьПоддержка 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ОбязательныйСоответствующийДа

Правила C:2012 MISRA «указатели и массивы»

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

Правила C:2012 MISRA «перекрывающегося хранилища»

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

Правила C:2012 MISRA «Стандартные библиотеки»

ПравилоКатегорияПодатливостьПоддержка 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.

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

Информация об определяемом реализацией поведении для Embedded Coder доступна в разделе «Настройка опций окружения выполнения». Документация компилятора находится вне возможностей.

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

Сконфигурируйте метод целочисленного деления в диалоговом окне Параметры конфигурации модели (Model Configuration Parameters) на панели Hardware Implementation. Для получения дополнительной информации см. Раздел «Настройка опций окружения во время выполнения»

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

В обоих образцах вы несете ответственность за документирование предполагаемого использования #pragma. Для получения дополнительной информации смотрите Control Data и Function Placement in Memory путем вставки Pragmas.

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

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

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

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

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

Можно связать элементы модели требований. Эти ссылки включены в сгенерированный код C, чтобы обеспечить трассируемость из документа требований, к элементам модели и к сгенерированному коду. Для получения дополнительной информации смотрите View Simulink Requirements Links Associated with Элементы модели and Link Blocks and 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 заменяет основные типы данных типами typedefs, которые совместимы с Директивой 4.6. Руководство не требуется, так как это поведение по умолчанию в Embedded Coder. Для получения дополнительной информации смотрите Заменить и Переименовать типы данных для соответствия стандартам кодирования и Typedef.

Пояснительная записка к Директиве 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, по проекту соответствуют MISRA C:2012 правилу 8.12. Если вы вручную создаете файл определения, вы несете ответственность за обеспечение податливости. Для получения дополнительной информации смотрите Использование перечисленных данных в моделях Simulink.

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

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

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

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