Руководства по моделированию для податливости 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
hisl_0002: Использование блоков Математической функции (rem и обратная величина)Проверяйте использование блоков Математической функции (rem и взаимные функции)
hisl_0005: Использование блоков продуктаНе применяется
hisl_0006: Использование того, В то время как Итератор блокируетсяПроверяйте использование того, В то время как Итератор блокируется
hisl_0008: Использование Для Блоков ИтератораПроверяйте использование На блоки Итератора
hisl_0010: Использование Если блоки и Если блоки Subsystem ДействияПроверяйте использование Если блоки и Если блоки Subsystem Действия
hisl_0011: Использование блоков Случая Переключателя и блоков Subsystem ДействияПроверяйте блоки Случая Переключателя использования и блоки Subsystem Действия Случая Переключателя
hisl_0016: Использование блоков, которые вычисляют операторы отношенияПроверяйте на блоки Оператора отношения, которые приравнивают типы с плавающей точкой
hisl_0017: Использование блоков, которые вычисляют операторы отношения (2)Проверяйте использование блоков Оператора отношения
hisl_0018: Использование блока Logical OperatorПроверяйте использование блоков Логического оператора
hisl_0019: Использование блока Bitwise OperatorПроверяйте использование блока Bitwise Operator
hisl_0020: Блоки, не рекомендуемые для податливости MISRA C:2012

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

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

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

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

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

Проверка Model AdvisorПравило MISRA C:2012 или директива
Проверяйте параметры конфигурации на MISRA C:2012
 Установите 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: Стандартные функции ввода/вывода Библиотеки не должны использоваться

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

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

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

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

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

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

Проверяйте целочисленный размер слова

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

Имена объектов контрольной шины, которые используются в качестве имен элементов

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

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