Можно проверять, что модель или подсистема имеют вероятность генерации MISRA C:2012 совместимый код.
Квалифицированный Model Advisor проверяет (IEC Certification Kit)
Квалифицированный Model Advisor проверяет (DO Qualification Kit)
ID проверки: mathworks.misra.AssignmentBlocks
Идентифицируйте блоки Assignment, которые не имеют параметров блоков набором Action if any output element is not assigned к Error или Warning.
Эта проверка применяется к блоку Assignment, который доступен в библиотеке блока Simulink под Simulink> Math Operations.
В соответствии с рекомендациями этих увеличений проверки вероятность генерации MISRA C:2012 совместимый код для встраиваемых приложений, а также код, который выполняет CERT C, CWE, стандарты ISO/IEC TS 17961.
Доступный с Embedded Coder® и Simulink® Check™.
Условие | Рекомендуемое действие |
---|---|
Модель или подсистема могут содержать блоки Assignment с неполной инициализацией массивов, которые не имеют параметров блоков набором Action if any output element is not assigned к Error или Warning. | Установите параметры блоков Action if any output element is not assigned на одно из рекомендуемых значений:
|
Работает на моделях библиотеки.
Анализирует содержимое соединенных блоков библиотеки.
Анализирует содержимое в подсистемах маскированных.
Если у вас есть лицензия Simulink Check, позволяет исключения блоков и графиков.
Разовая редактированием Проверка. Эта проверка поддерживается разовой редактированием проверкой. Однако следующее условие проверки не поддерживается, потому что разовая редактированием проверка не может определить, является ли блок Assignment в подсистеме Итератора.
Установите параметры блоков Action if any output element is not assigned на одно из рекомендуемых значений:
Error, если блок Assignment не находится в подсистеме Итератора.
Warning, если блок Assignment находится в подсистеме Итератора.
MISRA C:2012, правило 9.1
ISO/IEC TS 17961: 2013, uninitref
CERT C, EXP33-C
CWE, CWE-908
MISRA C инструкции (Embedded Coder)
Безопасные стандарты кодирования (Embedded Coder)
ID проверки: mathworks.misra.BlkSupport
Идентифицируйте блоки, которые не поддерживаются или рекомендованы для MISRA C:2012 совместимая генерация кода.
В соответствии с рекомендациями этой проверки увеличивает вероятность генерации MISRA C:2012 совместимый код для встраиваемых приложений.
Доступный с Embedded Coder и Simulink Check.
Условие | Рекомендуемое действие |
---|---|
Блоки Интерполяционной таблицы с помощью интерполяции кубическим сплайном или методов экстраполяции были найдены в модели или подсистеме. Определенные блоки:
| Рассмотрите другие методы интерполяции и экстраполяции для блоков Интерполяционной таблицы. |
Блоки Интерполяционной таблицы устаревшие были найдены в модели или подсистеме. Определенные блоки:
| Рассмотрите заменяющий блоки Интерполяционной таблицы устаревшие. |
Блоки S-Function Builder были найдены в модели или подсистеме. | Рассмотрите заменяющий Разработчика S-функции блоки на блоки рекомендуемый для производства. |
Блоки From Workspace были найдены в модели или подсистеме | Рассмотрите заменяющий От блоков Рабочей области с блоками рекомендуемый для производства. |
Блоки строки были найдены в модели или подсистеме. Определенные блоки:
| Рассмотрите заменяющий блоки Строки на блоки рекомендуемый для производства. |
Вы можете:
Осуществите эту проверку своих моделей библиотеки.
Анализирует содержимое соединенных блоков библиотеки.
Анализирует содержимое в подсистемах маскированных.
Исключите блоки и графики от этой проверки, если у вас есть лицензия Simulink Check.
Разовая редактированием Проверка. Эта проверка поддерживается разовой редактированием проверкой.
ID проверки: mathworks.misra.BlockNames
Идентифицируйте имена блока, содержащие /
.
В соответствии с рекомендациями этой проверки увеличивает вероятность генерации MISRA C:2012 совместимый код для встраиваемых приложений.
Доступный с Embedded Coder и Simulink Check.
Условие | Рекомендуемое действие |
---|---|
Имена блока, содержащие / были найдены в модели или подсистеме. | Удаление от имени блока. |
Работает на моделях библиотеки.
Анализирует содержимое соединенных блоков библиотеки.
Анализирует содержимое в подсистемах маскированных.
Если у вас есть лицензия Simulink Check, позволяет исключения блоков и графиков.
Разовая редактированием Проверка. Эта проверка поддерживается разовой редактированием проверкой.
MISRA C:2012, правило 3.1
MISRA C инструкции (Embedded Coder)
ID проверки: mathworks.misra.CodeGenSettings
Идентифицируйте параметры конфигурации, которые могут повлиять на MISRA C:2012 совместимая генерация кода.
В соответствии с рекомендациями этой проверки увеличивает вероятность генерации MISRA C:2012 совместимый код для встраиваемых приложений.
Доступный с Embedded Coder и Simulink Check.
Условие | Рекомендуемое действие |
---|---|
Math and Data Types | |
Параметр конфигурации Use division for fixed-point net slope computation не установлен в On или Use division for reciprocals of integers only . | Установите Use division for fixed-point net slope computation на On или Use division for reciprocals of integers only . |
Параметр конфигурации Inf or NaN block output установлен в Параметр конфигурации Inf or NaN block output установлен в | Когда Support non-finite numbers:
|
Параметр конфигурации Model Verification block enabling установлен в Use local settings или Enable All . | Установите Model Verification block enabling на Disable All . |
Параметр конфигурации Undirected event broadcasts установлен в none или warning . | Установите Undirected event broadcasts на error . |
Параметр конфигурации Wrap on overflow установлен в None | Установите параметр конфигурации Wrap on overflow на warning или error . |
Hardware Implementation | |
Параметр конфигурации Production hardware signed integer division rounds to установлен в Undefined | Установите Production hardware signed integer division rounds to на Zero или Floor . |
Параметр конфигурации Shift right on a signed integer as arithmetic shift выбран. | Очистите Shift right on a signed integer as arithmetic shift. |
Simulation Target | |
Параметр конфигурации Compile-time recursion limit for MATLAB functions установлен в значение кроме 0 . | Установите Compile-time recursion limit for MATLAB functions на 0 . |
Параметр конфигурации Dynamic memory allocation in MATLAB functions выбран. | Очистите Dynamic memory allocation in MATLAB functions. |
Параметр конфигурации Enable run-time recursion for MATLAB functions выбран. | Очистите Enable run-time recursion for MATLAB functions. |
Code Generation | |
Параметр конфигурации Bitfield declarator type specifier установлен в
| Установите Bitfield declarator type specifier на uint_T . |
Параметр конфигурации Casting Modes не установлен в Standards Compliant . | Установите Casting Modes на Standards Compliant . |
Параметр конфигурации Code replacement library не установлен в None или AUTOSAR 4.0 . | Установите Code replacement library на |
Параметр конфигурации External mode выбран. | Очистите External mode. |
Параметр конфигурации Generate shared constants выбран. | Очистите Generate shared constants. |
Параметр конфигурации Include comments очищен. | Выберите Include comments. |
Параметр конфигурации MAT-file logging выбран. | Очистите MAT-file logging |
Для основанных на ERT целевых систем параметр конфигурации очищен MATLAB user comments. | Выберите MATLAB user comments. |
Значение для параметра конфигурации Maximum identifier length не введено. | Установите значение к зависящему от реализации пределу. Значением по умолчанию является 31 . |
Параметр конфигурации Parenthesis level не установлен в Maximum (Specify precedence with parentheses) . | Установите Parentheses level на Maximum (Specify precedence with parentheses) . |
Для основанных на ERT целевых систем параметр конфигурации очищен Preserve static keyword in function declarations, когда File packaging format установлен в | Выберите Preserve static keyword in function declarations. |
Параметр конфигурации Replace multiplications by powers of two with signed bitwise shifts выбран. | Очистите Replace multiplications by powers of two with signed bitwise shifts. |
Параметр конфигурации Shared code placement установлен в Auto . | Установите Shared code placement на |
Для основанных на ERT целевых систем параметр конфигурации выбран Support continuous time | Очистите Support continuous time. |
Для основанных на ERT целевых систем параметр конфигурации выбран Support non-inlined S-functions | Очистите Support non-inlined S-functions. |
Параметр конфигурации System-generated identifiers установлен в Classic . | Установите System-generated identifiers на Shortened . |
Параметр конфигурации System target file установлен в основанную на GRT цель. | Установите System target file на основанную на ERT цель. |
Use dynamic memory allocation for model initialization параметра конфигурации выбран, когда Code Interface Packaging установлен в Reusable Function . | Очистите Use dynamic memory allocation for model initialization. Примечание Выберите только, когда Code Interface Packaging будет установлен в |
Нажатие на Modify All изменяет значения параметров в рекомендуемые значения.
Примечание
Когда вы нажимаете Modify All для моделей с основанной на GRT целью, Model Advisor не обновляет параметр конфигурации System target file к основанной на ERT системе.
Подпроверки параметра зависят от результатов параметра, отмеченного с D в таблице результатов. Когда результатом является D-предупреждение, столбец Current Value в таблице результатов утверждает Необходимое как условие ограничение, которому не соответствуют для подпроверок. После того, как вы изменяете параметр, повторно выполняете проверку.
Примечание
Некоторые подпроверки характерны для параметров конфигурации для основанных на ERT систем. Эти параметры не обновляются, когда вы нажимаете Modify All, если вы не изменяете модель в основанную на ERT систему.
Эта проверка не рассматривает модели, на которые ссылаются.
ID проверки: mathworks.misra.CompareFloatEquality
Идентифицируйте операции равенства и неравенства на значениях с плавающей точкой.
Проверка отмечает источники, вызывающие равенство или операции неравенства на значениях с плавающей точкой.
В соответствии с рекомендациями этих увеличений проверки вероятность генерации MISRA C:2012 совместимый код для встраиваемых приложений, а также код, который выполняет CERT C и стандарты CWE.
Проверка не отмечает блоки с помощью операций равенства или неравенства на значениях с плавающей точкой, если они выравниваются по ширине с аннотацией Polyspace®. Когда вы осуществляете проверку, блоки списков таблиц Blocks with justification с операциями равенства или неравенства, которые имеют выравнивание.
Доступный с Embedded Coder и Simulink Check.
Условие | Рекомендуемое действие |
---|---|
Объект модели начинает операцию равенства или неравенства на значении с плавающей точкой. | Рассмотрите использование значений нес плавающей точкой для операций равенства или неравенства. |
Вы можете:
Исключите блоки и графики от этой проверки, если у вас есть лицензия Simulink Check.
MISRA C:2012, Dir 1.1
CERT C, FLP00-C
CWE, CWE-697
Аннотируйте код и скройте известные или приемлемые результаты (Polyspace Bug Finder)
Безопасные стандарты кодирования (Embedded Coder)
ID проверки: mathworks.misra.CompliantCGIRConstructions
Идентифицируйте блоки Simulink, которые содержат битовые операции на целых числах со знаком.
В соответствии с рекомендациями этих увеличений проверки вероятность генерации MISRA C:2012 совместимый код для встраиваемых приложений, а также код, который выполняет CERT C и стандарты CWE.
Доступный с Embedded Coder и Simulink Check.
Эта проверка требует лицензии Stateflow®, когда Stateflow используется в модели.
Условие | Рекомендуемое действие |
---|---|
Модель имеет блоки, которые содержат битовые операции на целых числах со знаком. | Рассмотрите использование беззнакового целого для битовых операций. |
Вы можете:
Проверка принимает, что код сгенерирован для целой модели. Когда код сгенерирован сборкой подсистемы или экспортами функций, проверка может продукт неправильные результаты.
Исключите блоки и графики от этой проверки, если у вас есть лицензия Simulink Check.
MISRA C:2012, правило 10.1
CERT C, INT13-C
CWE, CWE-682
hisl_0060: Параметры конфигурации, которые улучшают податливость MISRA C:2012
Безопасные стандарты кодирования (Embedded Coder)
ID проверки: mathworks.misra.RecursionCompliance
Идентифицируйте вызовы рекурсивной функции в диаграммах Stateflow.
В соответствии с рекомендациями этой проверки увеличивает вероятность генерации MISRA C:2012 совместимый код для встраиваемых приложений. Проверка отмечает графики, которые имеют вызовы рекурсивной функции.
Доступный с Embedded Coder и Simulink Check.
Эта проверка требует лицензии Stateflow.
Условие | Рекомендуемое действие |
---|---|
График имеет вызов рекурсивной функции. | Удалите вызов рекурсивной функции. |
MISRA C:2012, Dir 17.2
Избегайте нежелательной рекурсии в графике (Stateflow)
ID проверки: mathworks.misra.SwitchDefault
Идентифицируйте выражения случая переключателя, которые не имеют случая по умолчанию.
Проверка отмечает объекты модели, которые имеют выражения случая переключателя без случая по умолчанию.
В соответствии с рекомендациями этих увеличений проверки вероятность генерации MISRA C:2012 совместимый код для встраиваемых приложений, а также код, который выполняет CERT C, CWE, стандарты ISO/IEC TS 17961.
Проверка не отмечает блоки без случаев по умолчанию, если они выравниваются по ширине с аннотацией Polyspace. Когда вы осуществляете проверку, блоки списков таблиц Blocks with justification без случаев по умолчанию, которые имеют выравнивание.
Доступный с Embedded Coder и Simulink Check.
Условие | Рекомендуемое действие |
---|---|
Объект модели имеет выражение случая переключателя без случая по умолчанию. | Для блоков Switch Case считайте параметры блоков выбора Show default case, чтобы явным образом задать случай по умолчанию. |
Вы можете:
Осуществите эту проверку своих моделей библиотеки.
Исключите блоки и графики от этой проверки, если у вас есть лицензия Simulink Check.
Разовая редактированием Проверка. Эта проверка поддерживается разовой редактированием проверкой.
MISRA C:2012, правило 16.4
ISO/IEC TS 17961: 2013, swtchdflt
CERT C, MSC01-C
CWE, CWE-478
Аннотируйте код и скройте известные или приемлемые результаты (Polyspace Bug Finder)
Безопасные стандарты кодирования (Embedded Coder)
ID проверки: mathworks.codegen.PCGSupport
Идентифицируйте блоки, не поддержанные генерацией кода или не рекомендуемые для производственного развертывания C/C++ кода.
Эта проверка частично идентифицирует построения модели, которые не рекомендуются для генерации производственного кода C/C++. Для Simulink Coder™ и Embedded Coder, эти тождества построения модели появляются в таблицах Поддержки блока Simulink (Simulink Coder).
В некоторых случаях эта проверка отмечает блоки, которые поддерживаются для генерации кода. Для этих блоков необходимо рассмотреть информацию о сноске, которая предоставляется в примечаниях поддержки, и придерживайтесь рекомендуемого действия, обеспеченного Model Advisor.
В соответствии с рекомендациями этих увеличений проверки вероятность генерации кодирует, который выполняет CERT C, CWE и стандарты ISO/IEC TS 17961.
Доступный с Embedded Coder и Simulink Check.
Условие | Рекомендуемое действие |
---|---|
Модель или подсистема содержат блоки, которые не должны использоваться для производственного развертывания кода. | Рассмотрите заменяющий блоки перечисленный в результатах. Кликните по элементу из списка сомнительных элементов, чтобы определить местоположение условия. |
Модель или подсистема содержат блоки, которые поддерживаются, но не рекомендуемые для генерации производственного кода. | Рассмотрите примечания поддержки и придерживайтесь рекомендуемого действия, обеспеченного Model Advisor. |
Вы можете:
Осуществите эту проверку своих моделей библиотеки.
Анализируйте содержимое соединенных блоков библиотеки.
Анализируйте содержимое в подсистемах маскированных.
Исключите блоки и графики, если у вас есть лицензия Simulink Check.
Эта проверка поддерживается разовой редактированием проверкой.
Блоки и продукты, поддержанные для генерации кода (Simulink Coder)
Безопасные стандарты кодирования (Embedded Coder)
ID проверки: mathworks.misra.AutosarReceiverInterface
Идентифицируйте импорт интерфейса приемника AUTOSAR, который не имеет соответствия с ошибочными портами.
В соответствии с рекомендациями этой проверки увеличивает вероятность генерации MISRA C:2012 совместимый код для встраиваемых приложений. Проверка отмечает импорт интерфейсов приемника AUTOSAR, который пропускает ошибочные порты. Следующая таблица идентифицирует типы режима доступа к данным AUTOSAR для интерфейсных портов приемника, которые отмечаются проверкой, когда соответствующий ошибочный порт отсутствует.
Тип режима доступа к данным AUTOSAR | Отмеченный проверкой? |
---|---|
ImplicitReceive | Да |
ExplicitReceive | Да |
QueuedExplicitReceive | Нет |
ErrorStatus | Нет |
ModeReceive | Нет |
IsUpdated | Нет |
EndToEndRead | Да |
ExplicitReceiveByVal | Нет |
otherwise | Нет |
Проверка не отмечает недостающие ошибочные порты, когда они выравниваются по ширине с аннотацией Polyspace. Когда вы осуществляете проверку, таблица Blocks with justification приводит недостающие ошибочные порты, которые имеют выравнивание.
Доступный с Embedded Coder и Simulink Check.
Условие | Рекомендуемое действие |
---|---|
Импорт интерфейса приемника AUTOSAR не имеет соответствующего ошибочного порта. |
Добавьте недостающий ошибочный порт и сопоставьте с соответствующим импортом интерфейса приемника AUTOSAR. |
Интерфейсные порты приемника AUTOSAR не имеют соответствующего ошибочного порта, когда режимом доступа к данным является ImplicitReceive , ExplicitReceive , или EndToEndRead . | Добавьте недостающий ошибочный порт и сопоставьте с соответствующим импортом интерфейса приемника AUTOSAR. |
Вы можете:
Анализирует верхний слой / корневые модели уровня.
Исключите блоки и графики от этой проверки, если у вас есть лицензия Simulink Check.
MISRA C: 2012, директива 4.7
MISRA C инструкции (Embedded Coder)
Аннотируйте код и скройте известные или приемлемые результаты (Polyspace Bug Finder)
Сконфигурируйте элементы AUTOSAR и свойства (AUTOSAR Blockset)
Настройка компонента AUTOSAR (AUTOSAR Blockset)
ID проверки: mathworks.misra.ModelFunctionInterface
Идентифицируйте недостающие спецификаторы const в указателях входных данных.
В соответствии с рекомендациями этой проверки увеличивает вероятность генерации MISRA C:2012 совместимый код для встраиваемых приложений. Проверка отмечает указатели входных данных, которые не имеют спецификатора const.
Доступный с Embedded Coder и Simulink Check.
Условие | Рекомендуемое действие |
---|---|
Спецификатор const не задан для указателя входных данных. | Рассмотрите добавление спецификатора const к указателю входных данных. |
MISRA C:2012, правило 8.13
MISRA C инструкции (Embedded Coder)
ID проверки: mathworks.misra.IntegerWordLengths
Идентифицируйте целочисленные размеры слова, которые не выполняют настройки аппаратной реализации
Проверка отмечает целые числа, размеры слова которых превышают количество битов, разрешенных через настройки аппаратной реализации.
В соответствии с рекомендациями этих увеличений проверки вероятность генерации MISRA C:2012 совместимый код для встраиваемых приложений, а также код, который выполняет CERT C и стандарты CWE.
Доступный с Embedded Coder и Simulink Check.
Условие | Рекомендуемое действие |
---|---|
Объект модели содержит целочисленные размеры слова, которые несовместимы с настройками аппаратной реализации. |
Обновите целое число, таким образом, его длина не превышает разрешенное количество битов. Можно просмотреть разрешенное количество битов в диалоговом окне Configuration Parameters на the Hardware Implementation> панель Device details. |
Вы можете:
Исключите блоки и графики от этой проверки, если у вас есть лицензия Simulink Check.
MISRA C:2012, правило 10.1
CERT C, INT13-C
CWE, CWE-682
MISRA C инструкции (Embedded Coder)
Безопасные стандарты кодирования (Embedded Coder)
ID проверки: mathworks.misra.BusElementNames
Идентифицируйте имена объектов шины, которые используются в качестве имен элементов шины.
Используя эти увеличения проверки вероятность генерации кодирует для встраиваемых приложений, который совместим с MISRA C:2012. Проверка отмечает экземпляры, где имя Simulink.Bus object используется в качестве имени элемента Simulink.Bus.
Доступный с Embedded Coder и Simulink Check.
Условие | Рекомендуемое действие |
---|---|
Имя объекта шины используется в качестве имени элемента шины. | Поменяйте или отмеченное имя объекта шины или имя элемента шины так, чтобы они не были идентичны. |
MISRA C:2012, правило 5.6
AGC AC MISRA, правило 5.3
MISRA C инструкции (Embedded Coder)