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

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

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

Чтобы увеличить руководства по моделированию, разработанные MathWorks Advisory Board (MAB), MathWorks® опубликовал набор руководств по моделированию то особое внимание на приложениях повышенной надежности.

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

Инструкция высокой целостностиПроверка Model Advisor
hisl_0001: Использование блока AbsПроверяйте использование блоков Abs (Simulink Check)
hisl_0002: Использование блоков Математической функции (rem и обратная величина)Проверяйте использование блоков Математической функции (rem и взаимные функции) (Simulink Check)
hisl_0005: Использование блоков продуктаНе применяется
hisl_0006: Использование того, В то время как Итератор блокируетсяПроверяйте использование того, В то время как Итератор блокируется (Simulink Check)
hisl_0008: Использование Для Блоков ИтератораПроверяйте использование На блоки Итератора (Simulink Check)
hisl_0010: Использование Если блоки и Если блоки Subsystem ДействияПроверяйте использование Если блоки и Если блоки Subsystem Действия (Simulink Check)
hisl_0011: Использование блоков Случая Переключателя и блоков Subsystem ДействияПроверяйте использование блоков Случая Переключателя и блоков Subsystem Действия Случая Переключателя (Simulink Check)
hisl_0016: Использование блоков, которые вычисляют операторы отношенияПроверяйте на блоки Оператора отношения, которые приравнивают типы с плавающей точкой (Simulink Check)
hisl_0017: Использование блоков, которые вычисляют операторы отношения (2)Проверяйте использование блоков Оператора отношения (Simulink Check)
hisl_0018: Использование блока Logical OperatorПроверяйте использование блоков Логического оператора (Simulink Check)
hisl_0019: Использование битовых операцийПроверяйте использование блоков битовой операции (Simulink Check)
hisl_0020: Блоки, не рекомендуемые для податливости MISRA C:2012

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

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

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

Объяснение MISRA C:2012 для проверок Model Advisor

Эта таблица обеспечивает объяснение MISRA C:2012 для проверок Model Advisor.

Проверка Model AdvisorПравило MISRA C:2012 или директива
Проверяйте параметры конфигурации на MISRA C:2012 (Simulink Check)
 Установите Use division for fixed-point net slope computation на On или Use division for reciprocals of integers only.

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

Установите Inf or NaN block output на warning или error.

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

Установите Model Verification block enabling на Disable All.

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

Установите Undirected event broadcasts на error.

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

Установите параметр конфигурации Wrap on overflow на warning или error.

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

Установите Production hardware signed integer division rounds to на Zero или Floor.

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

Очистите Shift right on a signed integer as arithmetic shift .

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

Установите Compile-time recursion limit for MATLAB functions на 0 .

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

Очистите Dynamic memory allocation in MATLAB functions.

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

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

Очистите Enable run-time recursion for MATLAB functions.

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

Установите Bitfield declarator type specifier на uint_T.

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

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

Установите Casting Modes на Standards Compliant.

Правила MISRA C:2012 10.x: существенная модель типа

Установите Code replacement library на None или AUTOSAR 4.0

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

Очистите External mode.

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

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

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

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

Очистите Generate shared constants.

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

Очистите MAT-file logging

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

Установите Maximum identifier length на зависящий от реализации предел. Значением по умолчанию является 31.

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

Установите Parentheses level на Maximum (Specify precedence with parentheses).

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

Выберите Preserve static keyword in function declarations.

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

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

Очистите Replace multiplications by powers of two with signed bitwise shifts.Правило 10.1 MISRA C:2012: Операнды не должны иметь несоответствующего существенного типа

Установите Shared code placement на Shared location

Необходимое условие параметра конфигурации Generate shared constants

Очистите Support continuous time.

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

Очистите Support non-finite numbers

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

Очистите Support non-inlined S-functions.

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

Установите System-generated identifiers на Shortened.

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

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

MISRA C:2012 5.4: Макро-идентификаторы должны быть отличными

MISRA C:2012 5.5: Идентификаторы должны быть отличны от макро-имен

Установите System target file на основанную на ERT цель.

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

Очистите Use dynamic memory allocation for model initialization.

Выберите только, когда Code Interface Packaging будет установлен в Reusable Function.

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

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

EnableSignedLeftShifts – off

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

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

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

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

Блоки Интерполяционной таблицы с помощью интерполяции кубическим сплайном или методов экстраполяции.

Определенные блоки:

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

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

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

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

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

Блоки Интерполяционной таблицы устаревшие.

Определенные блоки:

  • Интерполяционная таблица

  • (2D) интерполяционная таблица

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

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

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

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

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

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

Блоки S-Function Builder

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

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

Блоки From Workspace

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

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

Определенные блоки:

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

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

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

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

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

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

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

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

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

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

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