Проверки

C:2012 MISRA

Можно проверить, что ваша модель или подсистема имеют вероятность генерации MISRA C:2012 совместимого кода.

См. также

Проверяйте использование блоков Assignment

Проверяйте идентификатор: 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 параметров блоков в одно из рекомендуемых значений:

  • Error, если Assignment блок не находится в подсистеме итератора.

  • Warning, если Assignment блок находится в подсистеме итератора.

Возможности и ограничения

  • Работает на библиотечных моделях.

  • Анализирует содержимое библиотечно связанных блоков.

  • Анализирует содержимое маскированных подсистем.

  • Если у вас есть лицензия Simulink Check, разрешает исключения блоков и графиков.

Проверка во время редактирования.  Эта проверка поддерживается проверкой во время редактирования. Однако следующее условие проверки не поддерживается, поскольку проверка во время редактирования не может определить, находится ли блок Assignment в подсистеме итератора.

Установите Action if any output element is not assigned параметров блоков в одно из рекомендуемых значений:

  • Error, если Assignment блок не находится в подсистеме итератора.

  • Warning, если Assignment блок находится в подсистеме итератора.

См. также

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

Проверяйте идентификатор: mathworks.misra.BlkSupport

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

Описание

Следование рекомендациям этой проверки увеличивает вероятность генерации MISRA C:2012 совместимого кода для встраиваемых приложений.

Доступно с Embedded Coder и Simulink Check.

Результаты и рекомендуемые действия

СостояниеРекомендуемое действие

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

Рассмотрите другие методы интерполяции и экстраполяции для блоков Интерполяционной таблицы.

Устаревшие блоки Интерполяционной таблицы были найдены в модели или подсистеме. Конкретными блоками являются:

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

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

Рассмотрите замену устаревших блоков интерполяционной таблицы.
S-Function Builder блоки были найдены в модели или подсистеме.Рассмотрите замену блоков S-Function Builder на блоки, рекомендуемые для производства.
From Workspace блоки были найдены в модели или подсистемеРассмотрите замену блоков Из Рабочей области на блоки, рекомендуемые для производства.

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

Рассмотрите замену строковых блоков на блоки, рекомендуемые для производства.

Возможности и ограничения

Вы можете:

  • Запустите эту проверку на своих моделях библиотеки.

  • Анализирует содержимое библиотечно связанных блоков.

  • Анализирует содержимое маскированных подсистем.

  • Исключить блоки и графики из этой проверки, если у вас есть лицензия Simulink Check.

Проверка во время редактирования.  Эта проверка поддерживается проверкой во время редактирования.

См. также

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

Проверяйте идентификатор: mathworks.misra.BlockNames

Идентифицируйте имена блоков, содержащие /.

Описание

Следование рекомендациям этой проверки увеличивает вероятность генерации MISRA C:2012 совместимого кода для встраиваемых приложений.

Доступно с Embedded Coder и Simulink Check.

Результаты и рекомендуемые действия

СостояниеРекомендуемое действие
Имена блоков, содержащие / были найдены в модели или подсистеме.Удаление / от имени блока.

Возможности и ограничения

  • Работает на библиотечных моделях.

  • Анализирует содержимое библиотечно связанных блоков.

  • Анализирует содержимое маскированных подсистем.

  • Если у вас есть лицензия Simulink Check, разрешает исключения блоков и графиков.

Проверка во время редактирования.  Эта проверка поддерживается проверкой во время редактирования.

См. также

Проверьте параметры конфигурации для C:2012 MISRA

Проверяйте идентификатор: mathworks.misra.CodeGenSettings

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

Описание

Следование рекомендациям этой проверки увеличивает вероятность генерации 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.

Значение параметра конфигурации <reservedrangesplaceholder1> установлено равным None или error и Support non-finite numbers установлено на on.

Значение параметра конфигурации <reservedrangesplaceholder1> установлено равным None и Support non-finite numbers установлено на off.

Когда Support non-finite numbers есть:

  • on, установите Inf or NaN block output равным warning

  • off, установите Inf or NaN block output равным warning или error

Значение параметра конфигурации <reservedrangesplaceholder1> установлено равным Use local settings или Enable All.Установите Model Verification block enabling значение Disable All.
Значение параметра конфигурации <reservedrangesplaceholder1> установлено равным none или warning.Установите Undirected event broadcasts значение error.
Значение параметра конфигурации <reservedrangesplaceholder1> установлено равным NoneУстановите значение параметра конфигурации Wrap on overflow равным warning или error.
Hardware Implementation
Значение параметра конфигурации <reservedrangesplaceholder1> установлено равным UndefinedУстановите Production hardware signed integer division rounds to значение Zero или Floor.
Выбран параметр конфигурации <reservedrangesplaceholder0>.Очистить Shift right on a signed integer as arithmetic shift.
Simulation Target
Параметр конфигурации <reservedrangesplaceholder1> задано значение, отличное от 0.Установите Compile-time recursion limit for MATLAB functions значение 0.
Выбран параметр конфигурации <reservedrangesplaceholder0>.Очистить Dynamic memory allocation in MATLAB functions.
Выбран параметр конфигурации <reservedrangesplaceholder0>.Очистить Enable run-time recursion for MATLAB functions.
Code Generation

Значение параметра конфигурации <reservedrangesplaceholder1> установлено равным uchar_T при выборе любого из этих параметров:

  • Pack Boolean data into bitfields

  • Use bitsets for storing state configuration

  • Use bitsets for storing Boolean data

Установите Bitfield declarator type specifier значение uint_T.
Значение параметра конфигурации Casting Modes не установлено на Standards Compliant.Установите Casting Modes значение Standards Compliant.
Значение параметра конфигурации Code replacement library не установлено на None или AUTOSAR 4.0.

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

Выбран параметр конфигурации <reservedrangesplaceholder0>.Очистить External mode.
Выбран параметр конфигурации <reservedrangesplaceholder0>.Очистить Generate shared constants.

Параметр конфигурации <reservedrangesplaceholder0> сброшен.

Выберите Include comments.
Выбран параметр конфигурации <reservedrangesplaceholder0>.

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

Для целевых систем на основе ERT параметров конфигурации <reservedrangesplaceholder0> очищается.Выберите MATLAB user comments.
Значение для параметр конфигурации <reservedrangesplaceholder0> не задано.Установите значение на зависимый от реализации предел. Значение по умолчанию является 31.
Значение параметра конфигурации Parenthesis level не установлено на Maximum (Specify precedence with parentheses).Установите Parentheses level значение Maximum (Specify precedence with parentheses).

Для целевых систем на основе ERT параметров конфигурации <reservedrangesplaceholder2> очищается, когда для File packaging format задано значение Compact или Compact (with separate data file)

Выберите Preserve static keyword in function declarations.
Выбран параметр конфигурации <reservedrangesplaceholder0>.Очистить Replace multiplications by powers of two with signed bitwise shifts.
Значение параметра конфигурации <reservedrangesplaceholder1> установлено равным Auto.

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

Для целевых систем на основе ERT выбирается параметр конфигурации <reservedrangesplaceholder0>Очистить Support continuous time.
Для целевых систем на основе ERT выбирается параметр конфигурации <reservedrangesplaceholder0> Очистить Support non-inlined S-functions.
Значение параметра конфигурации <reservedrangesplaceholder1> установлено равным Classic.Установите System-generated identifiers значение Shortened.
Значение параметра конфигурации <reservedrangesplaceholder0> устанавливается на целевом устройстве на основе 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 установлено на Reusable Function.

Результаты действий

При нажатии кнопки мыши Modify All значения параметров изменяются на рекомендуемые значения.

Примечание

При клике Modify All для моделей с целевым объектом на основе GRT, Model Advisor не обновляет параметр конфигурации System target file для системы на основе ERT.

Подчеки параметра зависят от результатов параметра, отмеченного D в таблице результатов. Когда результатом является D-Warning, в столбце Current Value в таблице результатов указывается, что ограничение «Предварительное условие» не соблюдается для подшеков. После изменения параметра перезапустите проверку.

Примечание

Некоторые подчеки характерны для параметров конфигурации для систем на основе ERT. Эти параметры не обновляются при нажатии кнопки мыши Modify All если вы не измените модель на систему на основе ERT.

Возможности и ограничения

Эта проверка не рассматривает ссылку на модели.

См. также

Проверяйте на равенство и неравенство операции над значениями с плавающей точкой

Проверяйте идентификатор: mathworks.misra.CompareFloatEquality

Идентифицируйте операции равенства и неравенства для значений с плавающей точкой.

Описание

Источники проверочных флагов, вызывающие операции равенства или неравенства для значений с плавающей точкой.

Следование рекомендациям этой проверки увеличивает вероятность генерации MISRA C:2012 совместимого кода для встраиваемых приложений, а также кода, который соответствует стандартам CERT C и CWE.

Проверка не помечает блоки с операциями равенства или неравенства на значениях с плавающей точкой, если они обоснованы Polyspace® аннотация. Когда вы запускаете проверку, в Blocks with justification таблице перечисляются блоки с операциями равенства или неравенства, которые имеют обоснование.

Доступно с Embedded Coder и Simulink Check.

Для этой проверки требуется Stateflow® лицензия.

Результаты и рекомендуемые действия

СостояниеРекомендуемое действие

Объект модели имеет операцию равенства или неравенства для значения с плавающей точкой.

Рассмотрите использование значений без плавающей точки для операций равенства или неравенства.

Возможности и ограничения

Вы можете:

  • Исключить блоки и графики из этой проверки, если у вас есть лицензия Simulink Check.

См. также

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

Проверяйте идентификатор: mathworks.misra.CompliantCGIRConstructions

Идентифицируйте блоки Simulink, которые содержат побитовые операции над целыми числами со знаком.

Описание

Следование рекомендациям этой проверки увеличивает вероятность генерации MISRA C:2012 совместимого кода для встраиваемых приложений, а также кода, который соответствует стандартам CERT C и CWE.

Доступно с Embedded Coder и Simulink Check.

Эта проверка требует лицензии Stateflow, когда Stateflow используется в модели.

Результаты и рекомендуемые действия

СостояниеРекомендуемое действие
Модель имеет блоки, которые содержат побитовые операции над целыми числами со знаком.Рассмотрите использование беззнаковых целых чисел для побитовых операций.

Возможности и ограничения

Вы можете:

  • Проверка предполагает, что код генерируется для всей модели. Когда код генерируется подсистемой build или экспортов функций, проверка может продукт неправильные результаты.

  • Исключить блоки и графики из этой проверки, если у вас есть лицензия Simulink Check.

См. также

Проверяйте на рекурсивные вызовы функций

Проверяйте идентификатор: mathworks.misra.RecursionCompliance

Идентифицируйте рекурсивные вызовы функций в диаграммах Stateflow.

Описание

Следование рекомендациям этой проверки увеличивает вероятность генерации MISRA C:2012 совместимого кода для встраиваемых приложений. Чек-флаги графиков, которые имеют рекурсивные вызовы функций.

Доступно с Embedded Coder и Simulink Check.

Для этой проверки требуется лицензия Stateflow.

Результаты и рекомендуемые действия

СостояниеРекомендуемое действие

График имеет рекурсивный вызов функции.

Удалите рекурсивный вызов функции.

См. также

Проверяйте на выражения случая коммутатора без случая по умолчанию

Проверяйте идентификатор: mathworks.misra.SwitchDefault

Идентифицируйте выражения случая switch, которые не имеют регистра по умолчанию.

Описание

Проверка флагов объектов модели, которые имеют выражения случая switch без случая по умолчанию.

Следование рекомендациям этой проверки увеличивает вероятность генерации MISRA C:2012 совместимого кода для встраиваемых приложений, а также кода, который соответствует стандартам CERT C, CWE, ISO/IEC TS 17961.

Проверка не помечает блоки без случаев по умолчанию, если они обоснованы аннотацией Polyspace. При запуске проверки в Blocks with justification таблице перечисляются блоки без случаев по умолчанию, которые имеют обоснование.

Доступно с Embedded Coder и Simulink Check.

Результаты и рекомендуемые действия

СостояниеРекомендуемое действие

Объект модели имеет выражение случая switch без случая по умолчанию.

Для Switch Case блоков рассмотрите выбор < reservedrangesplaceholder0 > параметров блоков, чтобы явным образом задать случай по умолчанию.

Возможности и ограничения

Вы можете:

  • Запустите эту проверку на своих моделях библиотеки.

  • Исключить блоки и графики из этой проверки, если у вас есть лицензия Simulink Check.

Проверка во время редактирования.  Эта проверка поддерживается проверкой во время редактирования.

См. также

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

Проверяйте идентификатор: 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.

Проверка во время редактирования

Эта проверка поддерживается проверкой во время редактирования.

См. также

Проверьте отсутствующие порты ошибок для интерфейсов приемника AUTOSAR

Проверяйте идентификатор: 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.

См. также

Проверяйте на отсутствующие квалификаторы const в функциях модели

Проверяйте идентификатор: mathworks.misra.ModelFunctionInterface

Идентифицируйте отсутствующие проверку типа const в указателях входных данных.

Описание

Следование рекомендациям этой проверки увеличивает вероятность генерации MISRA C:2012 совместимого кода для встраиваемых приложений. Контрольные флаги входных данных указатели, которые не имеют const qualifier.

Доступно с Embedded Coder и Simulink Check.

Результаты и рекомендуемые действия

СостояниеРекомендуемое действие
Для указателя входных данных не определен квалификатор const.Рассмотрите добавление квалификатора const к входным данным указателю.

См. также

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

Проверяйте идентификатор: mathworks.misra.IntegerWordLengths

Идентифицируйте целочисленные размеры слова, которые не соответствуют настройкам аппаратной реализации

Описание

Флажки чеков означают целые числа, размеры слова которых превышают количество бит, разрешенных настройками аппаратной реализации.

Следование рекомендациям этой проверки увеличивает вероятность генерации MISRA C:2012 совместимого кода для встраиваемых приложений, а также кода, который соответствует стандартам CERT C и CWE.

Доступно с Embedded Coder и Simulink Check.

Результаты и рекомендуемые действия

СостояниеРекомендуемое действие

Объект модели содержит целочисленные размеры слова, которые не соответствуют настройкам аппаратной реализации.

Обновите целое число так, чтобы его длина не превышала допустимое количество бит. Вы можете просмотреть допустимое количество бит в диалоговом окне Configuration Parameters, на панели Hardware Implementation > Device details.

Возможности и ограничения

Вы можете:

  • Исключить блоки и графики из этой проверки, если у вас есть лицензия Simulink Check.

См. также

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

Проверяйте идентификатор: mathworks.misra.BusElementNames

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

Описание

Использование этой проверки увеличивает вероятность генерации кода для встраиваемых приложений, который соответствует C:2012 MISRA. Флажки образцов, где Simulink имя объекта .Bus используется в качестве Simulink имени элемента .Bus.

Доступно с Embedded Coder и Simulink Check.

Результаты и рекомендуемые действия

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

См. также