Можно проверить, что ваша модель или подсистема может генерировать код, соответствующий MISRA C:2012.
Выполнить проверку и проверку результатов с помощью помощника по модели
Проверки квалифицированного консультанта по моделям (комплект для сертификации МЭК)
Проверки квалифицированного консультанта по моделям (квалификационный комплект DO)
Код чека: 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. | Задайте параметр блока Действие, если какому-либо выходному элементу не присвоено одно из рекомендуемых значений:
|
Выполняется для библиотечных моделей.
Анализ содержимого связанных блоков библиотеки.
Анализирует содержимое в маскированных подсистемах.
При наличии лицензии Simulink Check позволяет исключать блоки и диаграммы.
Проверка времени редактирования. Эта проверка поддерживается проверкой времени редактирования. Однако следующее условие проверки не поддерживается, поскольку проверка времени редактирования не может определить, находится ли блок Assignment в подсистеме Iterator.
Задайте параметр блока Действие, если какому-либо выходному элементу не присвоено одно из рекомендуемых значений:
Ошибка, если блок Assignment отсутствует в подсистеме Iterator.
Предупреждение, если блок Assignment находится в подсистеме Iterator.
MISRA C:2012, правило 9.1
ISO/IEC TS 17961:2013, uninitref
CERT C, EXP33-C
CWE, CWE-908
Рекомендации MISRA C (встроенный кодер)
Стандарты безопасного кодирования (встроенный кодер)
Код чека: mathworks.misra.BlkSupport
Определите блоки, которые не поддерживаются или не рекомендуются для создания кода, совместимого с MISRA C:2012.
Выполнение рекомендаций этой проверки повышает вероятность создания кода, соответствующего MISRA C:2012, для встраиваемых приложений.
Доступно с встроенным кодером и Simulink Check.
| Состояние | Рекомендуемое действие |
|---|---|
В модели или подсистеме найдены блоки таблицы подстановки, использующие методы интерполяции или экстраполяции кубических сплайнов. Конкретными блоками являются:
| Рассмотрим другие методы интерполяции и экстраполяции для блоков таблицы поиска. |
Устаревшие блоки таблицы подстановки найдены в модели или подсистеме. Конкретными блоками являются:
| Попробуйте заменить устаревшие блоки таблицы подстановки. |
| Блоки S-Function Builder были найдены в модели или подсистеме. | Рекомендуется заменить блоки S-Function Builder блоками, рекомендуемыми для производства. |
| Из рабочей области в модели или подсистеме найдены блоки | Попробуйте заменить блоки «Из рабочей области» блоками, рекомендованными для производства. |
Строковые блоки найдены в модели или подсистеме. Конкретными блоками являются:
| Рассмотрите возможность замены блоков String блоками, рекомендованными для производства. |
Вы можете:
Выполните эту проверку для моделей библиотек.
Анализ содержимого связанных блоков библиотеки.
Анализирует содержимое в маскированных подсистемах.
Исключите блоки и диаграммы из этой проверки, если у вас есть лицензия Simulink Check.
Проверка времени редактирования. Эта проверка поддерживается проверкой времени редактирования.
Код чека: mathworks.misra.BlockNames
Определение имен блоков, содержащих /.
Выполнение рекомендаций этой проверки повышает вероятность создания кода, соответствующего MISRA C:2012, для встраиваемых приложений.
Доступно с встроенным кодером и Simulink Check.
| Состояние | Рекомендуемое действие |
|---|---|
Имена блоков, содержащие / были найдены в модели или подсистеме. | Удалить / из имени блока. |
Выполняется для библиотечных моделей.
Анализ содержимого связанных блоков библиотеки.
Анализирует содержимое в маскированных подсистемах.
При наличии лицензии Simulink Check позволяет исключать блоки и диаграммы.
Проверка времени редактирования. Эта проверка поддерживается проверкой времени редактирования.
MISRA C:2012, Правило 3.1
Рекомендации MISRA C (встроенный кодер)
Код чека: 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 имеет значение Параметр конфигурации Inf или выход блока NaN имеет значение | Если Поддержка неграничных чисел:
|
Параметр конфигурации Включение блока проверки модели имеет значение 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 имеет значение
| Установить спецификатор типа декларатора Bitfield в значение uint_T. |
Параметру конфигурации Режимы литья не присвоено значение Standards Compliant. | Задать для режимов литья значение Standards Compliant. |
Параметр конфигурации Библиотека замены кода не установлена в значение 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 установлено значение | Выберите Сохранить статическое ключевое слово в объявлениях функций. |
| Параметр конфигурации Замена умножения на мощности двух со знаком побитовых сдвигов. | Clear Заменить умножение на степени двух со знаком побитовых сдвигов. |
Параметр конфигурации Размещение общего кода имеет значение Auto. | Задать для параметра Размещение общего кода значение |
| Для целевых систем на основе ERT выбран параметр конфигурации Поддержка непрерывного времени | Очистить время непрерывной поддержки. |
| Для целевых систем на базе ERT выбран параметр конфигурации Support non-inlined S-functions | Снимите флажок Поддерживать неинлинированные S-функции. |
Параметр конфигурации Системные идентификаторы имеют значение Classic. | Установите системные идентификаторы в значение Shortened. |
| Параметр конфигурации Системный целевой файл установлен в целевой файл на основе GRT. | Установите системный целевой файл в целевой файл на основе ERT. |
Параметр конфигурации Использовать динамическое выделение памяти для инициализации модели выбирается, если для параметра Code Interface Packaging установлено значение 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.
MISRA C:2012, Dir 1.1
CERT C, FLP00-C
CWE, CWE-697
Аннотирование кода и скрытие известных или приемлемых результатов (Polyspace Bug Finder)
Стандарты безопасного кодирования (встроенный кодер)
Код чека: mathworks.misra.CompliantCGIRConstructions
Определите блоки Simulink, содержащие побитовые операции со подписанными целыми числами.
Выполнение рекомендаций этой проверки повышает вероятность создания кода, соответствующего MISRA C:2012, для встраиваемых приложений, а также кода, соответствующего стандартам CERT C и CWE.
Доступно с встроенным кодером и Simulink Check.
Для этой проверки требуется лицензия Stateflow, если в модели используется Stateflow.
| Состояние | Рекомендуемое действие |
|---|---|
| Модель содержит блоки, содержащие побитовые операции со подписанными целыми числами. | Рекомендуется использовать целые числа без знака для побитовых операций. |
Вы можете:
Проверка предполагает, что код создается для всей модели. При создании кода функциями сборки или экспорта подсистемы проверка может привести к неправильным результатам.
Исключите блоки и диаграммы из этой проверки, если у вас есть лицензия Simulink Check.
MISRA C:2012, правило 10.1
CERT C, INT13-C
CWE, CWE-682
hisl_0060: Параметры конфигурации, улучшающие соответствие MISRA C:2012
Стандарты безопасного кодирования (встроенный кодер)
Код чека: mathworks.misra.RecursionCompliance
Определение рекурсивных вызовов функций в диаграммах Stateflow.
Выполнение рекомендаций этой проверки повышает вероятность создания кода, соответствующего MISRA C:2012, для встраиваемых приложений. Флажок помечает диаграммы, имеющие рекурсивные вызовы функций.
Доступно с встроенным кодером и Simulink Check.
Для этой проверки требуется лицензия Stateflow.
| Состояние | Рекомендуемое действие |
|---|---|
Диаграмма имеет рекурсивный вызов функции. | Удаление рекурсивного вызова функции. |
MISRA C:2012, правило 17.2
Избежать нежелательной рекурсии в диаграмме (поток состояний)
Код чека: mathworks.misra.SwitchDefault
Определите выражения вариантов переключения, которые не имеют вариантов по умолчанию.
Флажок помечает объекты модели, имеющие выражения вариантов переключения без варианта по умолчанию.
Выполнение рекомендаций этой проверки повышает вероятность создания кода, соответствующего MISRA C:2012, для встраиваемых приложений, а также кода, соответствующего стандартам CERT C, CWE, ISO/IEC TS 17961.
Проверка не помечает блоки без случаев по умолчанию, если они выровнены с аннотацией Polyspace. При выполнении проверки в таблице Блоки с выравниванием (Blocks with justification) перечислены блоки без вариантов по умолчанию, которые имеют выравнивание.
Доступно с встроенным кодером и Simulink Check.
| Состояние | Рекомендуемое действие |
|---|---|
Объект модели имеет выражение регистра переключения без регистра по умолчанию. | Для блоков «Вариант переключения» рекомендуется выбрать параметр блока «Показать вариант по умолчанию», чтобы явно указать вариант по умолчанию. |
Вы можете:
Выполните эту проверку для моделей библиотек.
Исключите блоки и диаграммы из этой проверки, если у вас есть лицензия Simulink Check.
Проверка времени редактирования. Эта проверка поддерживается проверкой времени редактирования.
MISRA C:2012, правило 16.4
ISO/IEC TS 17961:2013, swtchdflt
CERT C, MSC01-C
CWE, CWE-478
Аннотирование кода и скрытие известных или приемлемых результатов (Polyspace Bug Finder)
Стандарты безопасного кодирования (встроенный кодер)
Код чека: 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.
Эта проверка поддерживается проверкой времени редактирования.
Блоки и продукты, поддерживаемые для создания кода (Simulink Coder)
Стандарты безопасного кодирования (встроенный кодер)
Код чека: 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.
MISRA C: 2012, Директива 4.7
Рекомендации MISRA C (встроенный кодер)
Аннотирование кода и скрытие известных или приемлемых результатов (Polyspace Bug Finder)
Настройка элементов и свойств AUTOSAR (блок AUTOSAR)
Конфигурация компонента AUTOSAR (блок AUTOSAR)
Код чека: mathworks.misra.ModelFunctionInterface
Определите отсутствующие квалификаторы констант во входных указателях данных.
Выполнение рекомендаций этой проверки повышает вероятность создания кода, соответствующего MISRA C:2012, для встраиваемых приложений. Флажок помечает указатели входных данных, не имеющие квалификатора const.
Доступно с встроенным кодером и Simulink Check.
| Состояние | Рекомендуемое действие |
|---|---|
| Квалификатор const не определен для указателя входных данных. | Попробуйте добавить квалификатор константы к указателю входных данных. |
MISRA C:2012, правило 8.13
Рекомендации MISRA C (встроенный кодер)
Код чека: mathworks.misra.IntegerWordLengths
Определение целочисленных длин слов, не соответствующих параметрам реализации оборудования
Флажок помечает целые числа, длина слов которых превышает число битов, разрешенных в настройках реализации аппаратных средств.
Выполнение рекомендаций этой проверки повышает вероятность создания кода, соответствующего MISRA C:2012, для встраиваемых приложений, а также кода, соответствующего стандартам CERT C и CWE.
Доступно с встроенным кодером и Simulink Check.
| Состояние | Рекомендуемое действие |
|---|---|
|
Объект модели содержит целочисленные длины слов, которые не соответствуют параметрам реализации оборудования. |
Обновите целое число, чтобы его длина не превышала допустимое число битов. Разрешенное количество битов можно просмотреть в диалоговом окне Configuration Parameters на панели Hardware Implementation > Device details. |
Вы можете:
Исключите блоки и диаграммы из этой проверки, если у вас есть лицензия Simulink Check.
MISRA C:2012, правило 10.1
CERT C, INT13-C
CWE, CWE-682
Рекомендации MISRA C (встроенный кодер)
Стандарты безопасного кодирования (встроенный кодер)
Код чека: mathworks.misra.BusElementNames
Определите имена объектов шины, которые используются в качестве имен элементов шины.
Использование этой проверки повышает вероятность создания кода для встраиваемых приложений, совместимых с MISRA C:2012. Флажок помечает экземпляры, в которых имя объекта Simulink.Bus используется в качестве имени элемента Simulink.Bus.
Доступно с встроенным кодером и Simulink Check.
| Состояние | Рекомендуемое действие |
|---|---|
| Имя объекта шины используется в качестве имени элемента шины. | Измените либо имя помеченного объекта шины, либо имя элемента шины, чтобы они не были идентичными. |
MISRA C:2012, правило 5.6
MISRA AC AGC, Правило 5.3
Рекомендации MISRA C (встроенный кодер)