Сводные таблицы информации о Соответствии MISRA C:2012 идентифицируют руководства по моделированию, которые относятся к соответствию сгенерированного кода C с MISRA C:2012, кодирующим стандарты. Для списка этих инструкций и их соответствующей проверки Model Advisor, см. Инструкции по Моделированию систем повышенной надежности для Соответствия MISRA C:2012. Для получения информации об объяснении MISRA для проверок Model Advisor смотрите Объяснение MISRA C:2012 для Проверок Model Advisor.
Чтобы увеличить руководства по моделированию, разработанные MathWorks Automotive Advisory Board (MAAB), MathWorks® опубликовал набор руководств по моделированию то особое внимание на приложениях повышенной надежности.
Много руководств по моделированию высокой целостности имеют проверки Model Advisor, которые можно использовать, чтобы проверить соблюдение модели к инструкции. Эта таблица идентифицирует руководства по моделированию высокой целостности и обеспечивает соответствующую проверку Model Advisor. Не все руководства по моделированию имеют соответствующую проверку 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 на | Общая рекомендация для встраиваемых систем. | |
Очистите 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 на | Предпосылка параметра конфигурации 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 будет установлен в | Директива 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: приоритет операторов в рамках выражений должен быть сделан явным. | |
Блоки Интерполяционной таблицы устаревшие. Определенные блоки:
| Правило 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-функции блоки | Правило 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 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: имя определения типа должно быть уникальным идентификатором. |