exponenta event banner

Руководство по моделированию соответствия MISRA C:2012

Сводные таблицы информации о соответствии MISRA C:2012 определяют рекомендации по моделированию, которые имеют отношение к соответствию сгенерированного кода C стандартам кодирования MISRA C:2012. Список этих руководств и соответствующую проверку Model Advisor см. в разделе Рекомендации по моделированию систем с высокой целостностью для MISRA C:2012 Compliance. Для получения информации об объяснении MISRA для Образцовых проверок Советника посмотрите Объяснение MISRA C:2012 для Образцового советника Чекса.

Рекомендации по системному моделированию с высокой целостностью для соответствия MISRA C:2012

В дополнение к рекомендациям по моделированию, разработанным Консультативным советом MathWorks (MAB), компания MathWorks ® опубликовала ряд рекомендаций по моделированию, посвященных приложениям с высокой целостностью .

Во многих руководствах по моделированию с высокой целостностью имеются проверки Model Advisor, которые можно использовать для проверки соответствия модели этой рекомендации. Эта таблица определяет рекомендации по моделированию с высокой степенью целостности и предоставляет соответствующую проверку Model Advisor. Не все рекомендации по моделированию имеют соответствующую проверку Model Advisor.

Руководство по обеспечению высокой целостностиПроверка помощника по модели
hisl_0001: Использование блока AbsПроверка использования блоков Abs (Проверка Simulink)
hisl_0002: Использование блоков математических функций (rem и revacal)Проверка использования блоков математических функций (rem и обратных функций) (Проверка Simulink)
hisl_0005: Использование блоков продуктовНеприменимо
hisl_0006: Использование блоков итератораПроверка использования блоков итератора (Проверка Simulink)
hisl_0008: Использование блоков итератораПроверка использования блоков итератора (Проверка Simulink)
hisl_0010: Использование блоков If и блоков подсистемы действия IfПроверка использования блоков If и блоков подсистемы действий (Проверка Simulink)
hisl_0011: Использование блоков вариантов переключения и блоков подсистемы действийПроверка использования блоков «Switch Case» и блоков «Switch Case Action Subsystem» (Проверка Simulink)
hisl_0016: Использование блоков, вычисляющих реляционные операторыПроверка наличия блоков Relational Operator, приравнивающих типы с плавающей запятой (Проверка Simulink)
hisl_0017: Использование блоков, вычисляющих реляционные операторы (2)Проверка использования блоков реляционного оператора (Проверка Simulink)
hisl_0018: Использование блока логического оператораПроверка использования блоков логических операторов (Проверка Simulink)
hisl_0019: Использование побитовых операцийПроверка использования блоков управления битами (Проверка Simulink)
hisl_0020: Блоки не рекомендуются для соответствия MISRA C:2012

Проверка блоков, не рекомендованных для развертывания производственного кода C/C + + (Simulink Check)

Проверка блоков, не рекомендованных для MISRA C:2012 (Simulink Check)

hisl_0029: Использование блоков назначенияПроверка использования блоков назначения (Проверка Simulink)
hisl_0032: Имена объектов моделиПроверка имен объектов модели (Проверка Simulink)
hisl_0045: Параметры конфигурации > Математические типы и типы данных > Реализовать логические сигналы в виде логических данных (по сравнению с двойными)Проверьте настройки оптимизации, связанные с безопасностью, для логических сигналов (Проверка Simulink)
hisl_0053: Параметры конфигурации > Создание кода > Оптимизация > Удаление кода из преобразования с плавающей запятой в целое число, которое переносит значения за пределы диапазонаПроверка параметров оптимизации, связанных с безопасностью, для преобразований типов данных (Проверка Simulink)
hisl_0054: Параметры конфигурации > Создание кода > Оптимизация > Удалить код, защищающий от арифметических исключений разделенияПроверка параметров оптимизации, связанных с безопасностью, для арифметических исключений разделения (Проверка Simulink)
hisl_0060: Параметры конфигурации, улучшающие соответствие MISRA C:2012Проверьте параметры конфигурации для MISRA C:2012 (Проверка Simulink)
hisl_0061: Уникальные идентификаторы для ясностиПроверка диаграмм Stateflow для однозначно определенных объектов данных (Проверка Simulink)
hisl_0062: Глобальные переменные в графических функцияхПроверка глобальных переменных в графических функциях (Проверка Simulink)
hisl_0063: Длина пользовательских имен объектов для улучшения соответствия MISRA C:2012Проверка длины пользовательских имен объектов (Проверка Simulink)
hisl_0101: Избегайте операций инвариантного сравнения для улучшения соответствия MISRA C:2012Неприменимо
hisl_0102: Тип данных переменных управления контуром для улучшения соответствия MISRA C:2012Проверка типа данных переменных управления контуром (Проверка Simulink)
hisl_0314: Параметры конфигурации > Диагностика > Валидность данных > СигналыПроверка параметров диагностики, связанных с безопасностью, на наличие сигнальных данных (Проверка Simulink)
hisf_0003: Использование побитовых операцийПроверка использования побитовых операций в диаграммах Stateflow (Проверка Simulink)
hisf_0004: Защита от рекурсивных вызовов функций для улучшения соответствия кодаНеприменимо
hisf_0064: Операции Shift для данных Stateflow для улучшения соответствия кодаПроверка использования операций смены для данных Stateflow (Проверка Simulink)
hisf_0065: Типовые операции в Stateflow для улучшения соответствия кодаПроверка операций назначения в диаграммах Stateflow (Проверка Simulink)
hisf_0211: Защита от использования унарных операторов в картах Stateflow для улучшения соответствия кодаПроверка диаграмм Stateflow для унарных операторов (Проверка Simulink)

MISRA C:2012 Обоснование проверок консультанта по моделям

В этой таблице приводится обоснование MISRA C:2012 для проверок Model Advisor.

Проверка помощника по моделиMISRA C:2012 Правило или Директива
Проверка параметров конфигурации для MISRA C:2012 (Simulink Check)
 Задать для параметра «Использовать деление» для расчета чистого уклона с фиксированной точкой значение On или Use division for reciprocals of integers only.

MISRA C:2012 Правило 10.1: Операнды не должны быть ненадлежащего существенного типа.

Установить выход блока Inf или NaN в warning или error.

MISRA C:2012 Директива 4.1: Отказы во время работы должны быть сведены к минимуму

Установка блока проверки модели, позволяющего Disable All.

Общая рекомендация для встраиваемых систем.

Установка для широковещательных передач неориентированных событий значения error.

MISRA C:2012 Правило 17.2: Функции не должны называть себя прямо или косвенно

Задайте для параметра конфигурации Wrap on overflow значение warning или error.

MISRA C:2012 Директива 4.1: Отказы во время работы должны быть сведены к минимуму

Установить для производственного оборудования, подписанного целочисленными раундами деления, значение Zero или Floor.

MISRA C:2012 Правило 10.1: Операнды не должны быть ненадлежащего существенного типа.

Снимите флажок «Сдвиг справа от целого числа со знаком» в качестве арифметического сдвига.

MISRA C:2012 Правило 10.1: Операнды не должны быть ненадлежащего существенного типа.

Установить предел рекурсии времени компиляции для функций MATLAB в 0 .

MISRA C:2012 Правило 17.2: Функции не должны называть себя прямо или косвенно

Снимите флажок Динамическое выделение памяти в функциях MATLAB.

Директива MISRA C:2012 4.12: Динамическое выделение памяти не должно использоваться.

MISRA C:2012 Правило 21.3: Функции выделения и освобождения памяти < stdlib.h > не используются.

Снимите флажок Включить рекурсию во время выполнения для функций MATLAB.

MISRA C:2012 Правило 17.2: Функции не должны называть себя прямо или косвенно

Установить спецификатор типа декларатора Bitfield в значение uint_T.

MISRA C:2012 Правило 6.1: Битовые поля должны объявляться только с соответствующим типом

MISRA C:2012 Правило 6.2: Одноразрядные именованные битовые поля не должны быть подписанного типа

Задать для режимов литья значение Standards Compliant.

MISRA C:2012 Правила 10.x: Модель основного типа

Задать для библиотеки замены кода значение None или AUTOSAR 4.0

Общая рекомендация для встраиваемых систем.

Снимите флажок Внешний режим.

Общая рекомендация для встраиваемых систем.

Директива MISRA C:2012 4.12 Динамическое выделение памяти не должно использоваться

MISRA C:2012 Правило 21.3 Функции выделения и освобождения памяти < stdlib.h > не должны использоваться

MISRA C:2012 Правило 21.6 Функции ввода/вывода стандартной библиотеки не должны использоваться

Снимите флажок «Генерировать общие константы».

Правило MISRA 8.5: Внешний объект или функция должны быть объявлены один раз в одном и только в одном файле

Очистка журнала файлов MAT

Общая рекомендация для встраиваемых систем.

Установите для параметра Максимальная длина идентификатора предел, зависящий от реализации. Значение по умолчанию: 31.

MISRA C:2012 Правила 5.1-9: Идентификаторы

Установить уровень «Круглые скобки» в значение Maximum (Specify precedence with parentheses).

MISRA C:2012 Правило 12.1: Приоритет операторов в выражениях должен быть явным

Выберите Сохранить статическое ключевое слово в объявлениях функций.

MISRA Правило 8.7: Функции и объекты не должны определяться с внешней связью, если на них имеются ссылки только в одной единице перевода

MISRA Правило 8.8: Спецификатор статического класса хранения должен использоваться во всех объявлениях объектов и функций, имеющих внутреннюю связь

Clear Заменить умножение на степени двух со знаком побитовых сдвигов.MISRA C:2012 Правило 10.1: Операнды не должны быть ненадлежащего существенного типа

Задать для параметра Размещение общего кода значение Shared location

Обязательное условие параметра конфигурации Создание общих констант

Очистить время непрерывной поддержки.

Общая рекомендация для встраиваемых систем.

Очистить Поддержку неграничных чисел

MISRA C:2012 Директива 4.1: Отказы во время работы должны быть сведены к минимуму

Снимите флажок Поддерживать неинлинированные S-функции.

Общая рекомендация для встраиваемых систем.

Установите системные идентификаторы в значение Shortened.

MISRA C:2012 5.1: Внешние идентификаторы должны быть различными

MISRA C:2012 5.2: Идентификаторы, объявленные в одном объеме и пространстве имен, должны быть различными

MISRA C:2012 5.4: Идентификаторы макросов должны быть различными

MISRA C:2012 5,5: идентификаторы должны отличаться от имен макросов

Установите системный целевой файл в целевой файл на основе ERT.

Общая рекомендация для встраиваемых систем.

Снимите флажок Использовать динамическое выделение памяти для инициализации модели.

Выбор осуществляется только в том случае, если для параметра «Упаковка интерфейса кода» установлено значение Reusable Function.

Директива MISRA C:2012 4.12: Динамическое выделение памяти не должно использоваться.

MISRA C:2012 Правило 21.3: Функции выделения и освобождения памяти < stdlib.h > не используются.

EnableSignedLeftShifts - выкл.

MISRA C:2012 Правило 10.1: Операнды не должны быть ненадлежащего существенного типа

Проверка блоков, не рекомендованных для развертывания производственного кода C/C + +

Общая рекомендация для встраиваемых систем.

Проверить наличие блоков, не рекомендованных для MISRA C:2012
 

Поиск блоков таблицы с использованием методов интерполяции или экстраполяции кубических сплайнов.

Конкретными блоками являются:

MISRA C:2012 Правило 11.3: Приведение не должно выполняться между указателем на тип объекта и указателем на другой тип объекта.

MISRA C:2012 Правило 11.5: Преобразование из указателя в пустоту в указатель на объект не должно выполняться.

MISRA C:2012 Правило 11.8: Отливка не должна исключать никаких противоречий или изменчивых квалификаций из типа, на который указывает указатель.

MISRA C:2012 Правило 11.9: Макрос NULL должен быть единственной разрешенной формой целочисленного нулевого указателя константы.

MISRA C:2012 Правило 12.1: Приоритет операторов в выражениях должен быть явным.

Устаревшие блоки таблицы подстановки.

Конкретными блоками являются:

  • Таблица подстановки

  • Таблица подстановки (2-D)

MISRA C:2012 Правило 11.3: Приведение не должно выполняться между указателем на тип объекта и указателем на другой тип объекта.

MISRA C:2012 Правило 11.5: Преобразование из указателя в пустоту в указатель на объект не должно выполняться.

MISRA C:2012 Правило 11.8: Отливка не должна исключать никаких противоречий или изменчивых квалификаций из типа, на который указывает указатель.

MISRA C:2012 Правило 11.9: Макрос NULL должен быть единственной разрешенной формой целочисленного нулевого указателя константы.

MISRA C:2012 Правило 12.1: Приоритет операторов в выражениях должен быть явным.

MISRA C:2012 Правило 12.2: Операнд правой руки оператора переключения должен находиться в диапазоне от нуля до единицы меньше ширины в битах существенного типа операнда левой руки.

Блоки построителя S-функций

MISRA C:2012 Правило 8.4: Совместимое объявление должно быть видимым при определении объекта или функции с внешней связью.

MISRA C:2012 Правило 8.5: Внешний объект или функция объявляются один раз в одном и только в одном файле.

Из блоков рабочей области

MISRA C:2012 Правило 18.4: Операторы +, -, + = и - = не должны применяться к выражению типа указателя.

Строковые блоки найдены в модели или подсистеме.

Конкретными блоками являются:

MISRA C:2012 Директива 4.7: Если функция возвращает информацию об ошибке, то эта информация об ошибке должна быть протестирована

MISRA C:2012 Правило 17.7: Должно использоваться значение, возвращаемое функцией, не имеющей пустого типа возврата

MISRA C:2012 Правило 21.6: Стандартные функции ввода/вывода библиотеки не должны использоваться

Проверка неподдерживаемых имен блоков (Simulink Check)

MISRA C:2012 Правило 3.1: Символьные последовательности/* и//не должны использоваться в комментарии.

Проверка использования блоков назначения (Simulink Check)MISRA C:2012 Правило 9.1: Значение объекта с автоматической длительностью хранения не должно считываться до его установки.
Проверка выражений вариантов переключения без варианта по умолчанию (Simulink Check)MISRA C:2012 Правило 16.4: Каждый оператор коммутатора должен иметь метку по умолчанию.
Проверка отсутствия портов ошибок для интерфейсов приемника AUTOSAR (Simulink Check)

MISRA C:2012 Директива 4.7 Если функция возвращает информацию об ошибке, то эта информация об ошибке должна быть протестирована.

MISRA C:2012 Rule 17.7: Должно использоваться значение, возвращаемое функцией, тип возврата которой не является недействительным.

Проверка побитовых операций со подписанными целыми числами (Simulink Check)MISRA C:2012 Правило 10.1: Операнды не должны быть ненадлежащего существенного типа.
Проверка рекурсивных вызовов функций (Simulink Check)MISRA C:2012 Правило 17.2: Функции не должны называть себя прямо или косвенно.
Проверка операций равенства и неравенства для значений с плавающей запятой (Simulink Check)MISRA C:2012 Директива 1.1: Любое поведение, определяемое реализацией, от которого зависит результат программы, должно быть задокументировано и понято.
Проверка отсутствующих квалификаторов const в функциях модели (Simulink Check)MISRA C:2012 Правило 8.13: Указатель должен указывать на конст-квалифицированный тип, когда это возможно.
Проверка длины целого слова (Simulink Check)MISRA C:2012 Правило 10.1: Операнды не должны быть ненадлежащего существенного типа.
Проверка имен объектов шины, используемых в качестве имен элементов шины (Simulink Check)

MISRA C:2012 Правило 10.1: Операнды не должны быть ненадлежащего существенного типа.

MISRA C:2012 Правило 5.6: Имя typedef должно быть уникальным идентификатором.