exponenta event banner

Безопасные проверки кодирования для стандартов CERT C, CWE и ISO/IEC TS 17961

Эти проверки используются для проверки соответствия кода, генерируемого Embedded Coder ®, стандартам безопасного кодирования CERT C, CWE и ISO/IEC TS 17961 (Embedded Coder).

См. также

Проверка параметров конфигурации для стандартов безопасного кодирования

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

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

Описание

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

Поставляется с встроенным кодером и Simulink ® Check™.

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

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

Параметр конфигурации 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 при переполнении warning или error.
Внедрение аппаратных средств
Параметр конфигурации Производственное оборудование, подписанное целочисленными округами деления, имеет значение Undefined.Установить для производственного оборудования, подписанного целочисленными раундами деления, значение Zero или Floor.
Параметр конфигурации Shift справа от целого числа со знаком в качестве арифметического сдвига.Снимите флажок «Сдвиг справа от целого числа со знаком» в качестве арифметического сдвига.
Цель моделирования
Параметр конфигурации Compile-time recursion limit для функций MATLAB имеет значение, отличное от 0.Установить предел рекурсии времени компиляции для функций MATLAB в 0.
Параметр конфигурации Динамическое выделение памяти в функциях MATLAB.Снимите флажок Динамическое выделение памяти в функциях MATLAB.
Выбран параметр конфигурации Включить рекурсию во время выполнения для функций MATLAB.Снимите флажок Включить рекурсию во время выполнения для функций MATLAB.
Создание кода
Параметр конфигурации Библиотека замены кода не установлена в значение None или AUTOSAR 4.0.Задать для библиотеки замены кода значение None или AUTOSAR 4.0.
Выбран параметр конфигурации Внешний режим.Снимите флажок Внешний режим.

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

Выберите Включить комментарии.
Выбран параметр конфигурации MAT-файл регистрации.Очистить журнал MAT-файлов.
Для целевых систем на основе ERT параметр конфигурации MATLAB user comments очищается.Выберите комментарии пользователя MATLAB.
Параметр конфигурации Замена умножения на мощности двух со знаком побитовых сдвигов.Clear Заменить умножение на степени двух со знаком побитовых сдвигов.
Для целевых систем на основе ERT выбран параметр конфигурации Поддержка непрерывного времени Очистить время непрерывной поддержки.
Для целевых систем на базе ERT выбран параметр конфигурации Support non-inlined S-functions Снимите флажок Поддерживать неинлинированные S-функции.
Параметр конфигурации Системный целевой файл установлен в целевой файл на основе GRT.Установите системный целевой файл в целевой файл на основе ERT.
Параметр конфигурации Используется динамическое выделение памяти для инициализации модели.Снимите флажок Использовать динамическое выделение памяти для инициализации модели.

Примечание

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

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

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

Примечание

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

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

Примечание

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

См. также

Стандарты безопасного кодирования (встроенный кодер)

Проверка блоков, не рекомендованных для развертывания производственного кода 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.

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

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

См. также

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

Код чека: mathworks.security.BlockSupport

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

Описание

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

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

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

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

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

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

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

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

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

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

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

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

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

Вы можете:

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

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

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

См. также

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

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

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

Описание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

См. также

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

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

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

Описание

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

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

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

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

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

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

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

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

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

Вы можете:

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

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

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

См. также

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

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

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

Описание

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

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

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

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

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

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

Вы можете:

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

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

См. также

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

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

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

Описание

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

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

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

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

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

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

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

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

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

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

Вы можете:

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

См. также

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

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

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

Описание

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

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

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

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

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

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

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

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

Вы можете:

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

См. также

Обнаружение неработающей логики

Код чека: mathworks.sldv.deadlogic

Определите логику, которая остается неактивной во время моделирования.

Описание

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

С помощью Simulink Design Verifier™ можно выполнить более подробный анализ, определяющий как неработающую логику, так и активную логику. Дополнительные сведения см. в разделе Обнаружение неработающей логики, вызванной неправильным значением (Simulink Design Verifier).

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

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

РезультатРекомендуемое действие
Сбой, модель несовместима

Устраните несовместимость модели. См.:

Также см. раздел Обработка несовместимости с автоматическим остановом (Simulink Design Verifier).

В модели найдена мертвая логикаSimulink Design Verifier доказал, что эти решения и результаты условий не могут возникнуть и являются неубедительной логикой в модели. Неработоспособная логика также может быть побочным эффектом указанных ограничений на параметры или указанных минимальных и максимальных ограничений на входные порты. В редких случаях неработоспособная логика может быть результатом аппроксимаций, выполняемых Simulink Design Verifier. Не исключено, что есть цели, которые этот анализ не решил. Чтобы расширить результаты этого анализа, используйте обнаружение ошибок конструкции Simulink Design Verifier для определения активной логики. В редакторе Simulink выберите Apps > Design Verifier > Settings. В окне «Параметры конфигурации» на панели «Design Verifier > Design Error Detection» выберите «Dead logic» и «Identify active logic».
Мертвая логика не найдена в моделиSimulink Design Verifier не нашел в модели мертвой логики. Не исключено, что есть цели, которые этот анализ не решил. Чтобы расширить результаты этого анализа, используйте обнаружение ошибок конструкции Simulink Design Verifier для определения активной логики. В редакторе Simulink выберите Apps > Design Verifier > Settings. В окне «Параметры конфигурации» на панели «Design Verifier > Design Error Detection» выберите «Dead logic» и «Identify active logic».

См. также

Обнаружение переполнения целых чисел

Код чека: mathworks.sldv.integeroverflow

Обнаружение ошибок переполнения целочисленных или фиксированных данных в модели

Описание

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

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

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

РезультатРекомендуемое действие
Сбой, модель несовместима

Устраните несовместимость модели. Посмотрите

Также см. раздел Обработка несовместимости с автоматическим остановом (Simulink Design Verifier).

В модели обнаружено целочисленное переполнение

Для просмотра условий, вызывающих переполнение целого числа, создайте модель электрического жгута. При моделировании электрического жгута входные данные повторяют ошибку. Щелкните Просмотреть тестовый случай (View test case) в отчете Model Advisor.

См. также

Обнаружение деления по нулю

Код чека: mathworks.sldv.divbyzero

Обнаружение ошибок деления на ноль в модели

Описание

Эта проверка определяет операции в модели, которые вызывают ошибки деления на ноль.

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

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

РезультатРекомендуемое действие
Сбой, модель несовместима

Устраните несовместимость модели. Посмотрите

Также см. раздел Обработка несовместимости с автоматическим остановом (Simulink Design Verifier).

В модели найдено деление на ноль

Чтобы просмотреть условия, вызывающие деление на ноль, создайте модель электрического жгута. При моделировании электрического жгута входные данные повторяют ошибку. Щелкните Просмотреть тестовый случай (View test case) в отчете Model Advisor.

См. также

Обнаружение доступа к избыточному массиву

Код чека: mathworks.sldv.arraybounds

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

Описание

Эта проверка обнаруживает экземпляры доступа к массиву за пределами границ в Simulink Design Verifier.

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

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

РезультатРекомендуемое действие
Сбой, модель несовместима

Устраните несовместимость модели. Посмотрите

Также см. раздел Обработка несовместимости с автоматическим остановом (Simulink Design Verifier).

В модели обнаружен доступ вне связанного массива

Чтобы просмотреть условия, вызывающие доступ к массиву вне границ, создайте модель кабельных трасс. При моделировании электрического жгута входные данные повторяют ошибку. Щелкните Просмотреть тестовый случай (View test case) в отчете Model Advisor.

См. также

Обнаружение указанных нарушений минимального и максимального значений

Код чека: mathworks.sldv.minmax

Обнаружение сигналов, превышающих указанные минимальные и максимальные значения

Описание

Этот анализ проверяет указанные минимальное и максимальное значения (диапазоны проектирования) на промежуточных сигналах в модели и на выходных портах. Если анализ обнаруживает, что сигнал превышает проектный диапазон, результаты определяют, где в модели произошли ошибки.

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

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

РезультатРекомендуемое действие
Сбой, модель несовместима

Устраните несовместимость модели. Посмотрите

Также см. раздел Обработка несовместимости с автоматическим остановом (Simulink Design Verifier).

Нарушение минимума и/или максимума, обнаруженных в модели

Для просмотра условий, вызывающих нарушение, создайте модель электрического жгута. При моделировании электрического жгута входные данные повторяют ошибку. Щелкните Просмотреть тестовый случай (View test case) в отчете Model Advisor.

См. также