exponenta event banner

Проверки C:2012 MISRA

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

См. также

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

Код чека: mathworks.misra.AssignmentBlocks

Определите блоки назначения, не имеющие параметра блока Действие, если какому-либо выходному элементу не присвоено значение Ошибка или Предупреждение.

Описание

Эта проверка применяется к блоку Назначение (Assignment), который доступен в библиотеке блоков Simulink по пути Simulink > Математические операции (Math Operations).

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

Поставляется с Check™ Embedded Coder ® и Simulink ®.

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

СостояниеРекомендуемое действие
Модель или подсистема может содержать блоки Assignment с неполной инициализацией массива, которые не имеют параметра block Action, если какому-либо выходному элементу не присвоено значение Error или Warning.

Задайте параметр блока Действие, если какому-либо выходному элементу не присвоено одно из рекомендуемых значений:

  • Ошибка, если блок Assignment отсутствует в подсистеме Iterator.

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

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

  • Выполняется для библиотечных моделей.

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

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

  • При наличии лицензии Simulink Check позволяет исключать блоки и диаграммы.

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

Задайте параметр блока Действие, если какому-либо выходному элементу не присвоено одно из рекомендуемых значений:

  • Ошибка, если блок Assignment отсутствует в подсистеме Iterator.

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

См. также

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

Код чека: mathworks.misra.BlkSupport

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

Описание

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

Доступно с встроенным кодером и Simulink Check.

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

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

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

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

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

  • Таблица подстановки

  • Таблица подстановки (2-D)

Попробуйте заменить устаревшие блоки таблицы подстановки.
Блоки S-Function Builder были найдены в модели или подсистеме.Рекомендуется заменить блоки S-Function Builder блоками, рекомендуемыми для производства.
Из рабочей области в модели или подсистеме найдены блокиПопробуйте заменить блоки «Из рабочей области» блоками, рекомендованными для производства.

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

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

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

Вы можете:

  • Выполните эту проверку для моделей библиотек.

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

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

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

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

См. также

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

Код чека: mathworks.misra.BlockNames

Определение имен блоков, содержащих /.

Описание

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

Доступно с встроенным кодером и Simulink Check.

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

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

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

  • Выполняется для библиотечных моделей.

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

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

  • При наличии лицензии Simulink Check позволяет исключать блоки и диаграммы.

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

См. также

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

Код чека: mathworks.misra.CodeGenSettings

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

Описание

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

Доступно с встроенным кодером и Simulink Check.

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

СостояниеРекомендуемое действие
Математика и типы данных
Параметр конфигурации Использовать деление для вычисления чистого уклона с фиксированной точкой не установлен в On или Use division for reciprocals of integers only.Задать для параметра «Использовать деление» для расчета чистого уклона с фиксированной точкой значение On или Use division for reciprocals of integers only.

Параметр конфигурации Inf или выход блока NaN имеет значение None или error и Поддержка неграничных чисел имеет значение on.

Параметр конфигурации Inf или выход блока NaN имеет значение None и Поддержка неграничных чисел имеет значение off.

Если Поддержка неграничных чисел:

  • on, установите выход блока Inf или NaN в warning

  • off, установите выход блока Inf или NaN в warning или error

Параметр конфигурации Включение блока проверки модели имеет значение Use local settings или Enable All.Установка блока проверки модели, позволяющего Disable All.
Параметр конфигурации Undirected event broadcasts имеет значение none или warning.Установка для широковещательных передач неориентированных событий значения error.
Параметр конфигурации Wrap on overflow имеет значение NoneЗадайте для параметра конфигурации Wrap on overflow значение warning или error.
Внедрение аппаратных средств
Параметр конфигурации Производственное оборудование, подписанное целочисленными округами деления, имеет значение UndefinedУстановить для производственного оборудования, подписанного целочисленными раундами деления, значение Zero или Floor.
Параметр конфигурации Shift справа от целого числа со знаком в качестве арифметического сдвига.Снимите флажок «Сдвиг справа от целого числа со знаком» в качестве арифметического сдвига.
Цель моделирования
Параметр конфигурации Compile-time recursion limit для функций MATLAB имеет значение, отличное от 0.Установить предел рекурсии времени компиляции для функций MATLAB в 0.
Параметр конфигурации Динамическое выделение памяти в функциях MATLAB.Снимите флажок Динамическое выделение памяти в функциях MATLAB.
Выбран параметр конфигурации Включить рекурсию во время выполнения для функций MATLAB.Снимите флажок Включить рекурсию во время выполнения для функций MATLAB.
Создание кода

Параметр конфигурации Спецификатор типа декларатора Bitfield имеет значение uchar_T при выборе любого из этих параметров:

  • Упаковать логические данные в битовые поля

  • Использовать битсеты для сохранения конфигурации состояния

  • Использовать битовые наборы для хранения булевых данных

Установить спецификатор типа декларатора Bitfield в значение uint_T.
Параметру конфигурации Режимы литья не присвоено значение Standards Compliant.Задать для режимов литья значение Standards Compliant.
Параметр конфигурации Библиотека замены кода не установлена в значение None или AUTOSAR 4.0.

Задать для библиотеки замены кода значение None или AUTOSAR 4.0

Выбран параметр конфигурации Внешний режим.Снимите флажок Внешний режим.
Выбран параметр конфигурации Генерировать общие константы.Снимите флажок «Генерировать общие константы».

Параметр конфигурации Include comments очищен.

Выберите Включить комментарии.
Выбран параметр конфигурации MAT-файл регистрации.

Очистка журнала файлов MAT

Для целевых систем на основе ERT параметр конфигурации MATLAB user comments очищается.Выберите комментарии пользователя MATLAB.
Значение параметра конфигурации Максимальная длина идентификатора не указано.Установите значение предела, зависящего от внедрения. Значение по умолчанию: 31.
Параметр конфигурации Parenthesis level не имеет значение Maximum (Specify precedence with parentheses).Установить уровень «Круглые скобки» в значение Maximum (Specify precedence with parentheses).

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

Выберите Сохранить статическое ключевое слово в объявлениях функций.
Параметр конфигурации Замена умножения на мощности двух со знаком побитовых сдвигов.Clear Заменить умножение на степени двух со знаком побитовых сдвигов.
Параметр конфигурации Размещение общего кода имеет значение Auto.

Задать для параметра Размещение общего кода значение Shared location

Для целевых систем на основе ERT выбран параметр конфигурации Поддержка непрерывного времени Очистить время непрерывной поддержки.
Для целевых систем на базе ERT выбран параметр конфигурации Support non-inlined S-functions Снимите флажок Поддерживать неинлинированные S-функции.
Параметр конфигурации Системные идентификаторы имеют значение Classic.Установите системные идентификаторы в значение Shortened.
Параметр конфигурации Системный целевой файл установлен в целевой файл на основе GRT.Установите системный целевой файл в целевой файл на основе ERT.
Параметр конфигурации Использовать динамическое выделение памяти для инициализации модели выбирается, если для параметра Code Interface Packaging установлено значение Reusable Function.

Снимите флажок Использовать динамическое выделение памяти для инициализации модели.

Примечание

Выбор осуществляется только в том случае, если для параметра «Упаковка интерфейса кода» установлено значение Reusable Function.

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

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

Примечание

При нажатии кнопки Изменить все (Modify All) для моделей с целевым объектом на основе GRT мастер моделей не обновляет параметр конфигурации целевого файла системы в системе на основе ERT.

Подчеки параметров зависят от результатов параметра, отмеченного буквой D в таблице результатов. Если результатом является D-Warning, столбец Текущее значение (Current Value) в таблице результатов указывает на то, что условное ограничение не соблюдается для подчек. После изменения параметра повторно запустите проверку.

Примечание

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

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

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

См. также

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

Код чека: mathworks.misra.CompareFloatEquality

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

Описание

Флажок помечает источники, вызывающие операции равенства или неравенства для значений с плавающей запятой.

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

Проверка не помечает блоки с операциями равенства или неравенства для значений с плавающей запятой, если они выровнены с помощью аннотации Polyspace ®. При выполнении проверки в таблице Блоки с выравниванием (Blocks with justification) перечислены блоки с операциями равенства или неравенства, которые имеют выравнивание.

Доступно с встроенным кодером и Simulink Check.

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

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

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

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

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

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

Вы можете:

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

См. также

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

Код чека: mathworks.misra.CompliantCGIRConstructions

Определите блоки Simulink, содержащие побитовые операции со подписанными целыми числами.

Описание

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

Доступно с встроенным кодером и Simulink Check.

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

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

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

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

Вы можете:

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

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

См. также

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

Код чека: mathworks.misra.RecursionCompliance

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

Описание

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

Доступно с встроенным кодером и Simulink Check.

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

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

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

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

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

См. также

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

Код чека: mathworks.misra.SwitchDefault

Определите выражения вариантов переключения, которые не имеют вариантов по умолчанию.

Описание

Флажок помечает объекты модели, имеющие выражения вариантов переключения без варианта по умолчанию.

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

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

Доступно с встроенным кодером и Simulink Check.

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

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

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

Для блоков «Вариант переключения» рекомендуется выбрать параметр блока «Показать вариант по умолчанию», чтобы явно указать вариант по умолчанию.

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

Вы можете:

  • Выполните эту проверку для моделей библиотек.

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

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

См. также

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

Код чека: mathworks.codegen.PCGSupport

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

Описание

Эта проверка частично определяет конструкции модели, которые не рекомендуются для генерации производственного кода C/C + +. Для Simulink Coder™ и Embedded Coder эти идентификаторы конструкции модели отображаются в таблицах поддержки блоков Simulink (Simulink Coder ).

В некоторых случаях эта проверка помечает блоки, которые поддерживаются для создания кода. Для этих блоков необходимо просмотреть сведения о сноске, содержащиеся в заметках поддержки, и выполнить рекомендованное действие, предоставленное менеджером модели.

Выполнение рекомендаций этой проверки повышает вероятность генерации кода, соответствующего стандартам CERT C, CWE и ISO/IEC TS 17961.

Доступно с встроенным кодером и Simulink Check.

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

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

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

Вы можете:

  • Выполните эту проверку для моделей библиотек.

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

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

  • Исключение блоков и диаграмм при наличии лицензии 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 justigation) перечислены отсутствующие порты ошибок, имеющие выравнивание.

Доступно с встроенным кодером и Simulink Check.

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

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

Входной порт интерфейса приемника AUTOSAR не имеет соответствующего порта ошибки.

Добавьте отсутствующий порт ошибки и сопоставьте его с соответствующим входным портом интерфейса приемника AUTOSAR.

Порты интерфейса приемника AUTOSAR не имеют соответствующего порта ошибки, если режим доступа к данным ImplicitReceive, ExplicitReceive, или EndToEndRead.

Добавьте отсутствующий порт ошибки и сопоставьте его с соответствующим входным портом интерфейса приемника AUTOSAR.

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

Вы можете:

  • Анализ моделей верхнего уровня/корневых уровней.

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

См. также

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

Код чека: mathworks.misra.ModelFunctionInterface

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

Описание

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

Доступно с встроенным кодером и Simulink Check.

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

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

См. также

Проверить длину целого слова

Код чека: mathworks.misra.IntegerWordLengths

Определение целочисленных длин слов, не соответствующих параметрам реализации оборудования

Описание

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

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

Доступно с встроенным кодером и Simulink Check.

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

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

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

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

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

Вы можете:

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

См. также

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

Код чека: mathworks.misra.BusElementNames

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

Описание

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

Доступно с встроенным кодером и Simulink Check.

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

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

См. также