Эти проверки используются для проверки соответствия кода, генерируемого 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 имеет значение Параметр конфигурации Inf или выход блока NaN имеет значение | Если Поддержка неграничных чисел:
|
Параметр конфигурации Включение блока проверки модели имеет значение 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. |
| Параметр конфигурации Используется динамическое выделение памяти для инициализации модели. | Снимите флажок Использовать динамическое выделение памяти для инициализации модели. Примечание Выбор осуществляется только в том случае, если для параметра «Упаковка интерфейса кода» установлено значение |
При нажатии кнопки Изменить все значения параметров изменяются на рекомендуемые значения.
Примечание
При нажатии кнопки Изменить все (Modify All) для моделей с целевым объектом на основе GRT мастер моделей не обновляет параметр конфигурации целевого файла системы в системе на основе ERT.
Подчеки параметров зависят от результатов параметра, отмеченного буквой D в таблице результатов. Если результатом является D-Warning, столбец Текущее значение (Current Value) в таблице результатов указывает на то, что условное ограничение не соблюдается для подчек. После изменения параметра повторно запустите проверку.
Примечание
Некоторые подчеки специфичны для параметров конфигурации систем на основе ERT. Эти параметры не обновляются при нажатии кнопки Изменить все (Modify All), если модель не изменена на систему на основе ERT.
Стандарты безопасного кодирования (встроенный кодер)
Код чека: 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.security.BlockSupport
Определение блоков, не рекомендованных для соответствия стандартам безопасного кодирования.
Выполнение рекомендаций этой проверки повышает вероятность генерации кода, соответствующего стандартам безопасного кодирования CERT C, CWE, ISO/IEC TS 17961.
Доступно с встроенным кодером и Simulink Check.
| Состояние | Рекомендуемое действие |
|---|---|
В модели или подсистеме найдены блоки таблицы подстановки, использующие методы интерполяции или экстраполяции кубических сплайнов. Конкретными блоками являются:
| Рассмотрим другие методы интерполяции и экстраполяции для блоков таблицы поиска. |
Устаревшие блоки таблицы подстановки найдены в модели или подсистеме. Конкретными блоками являются:
| Попробуйте заменить устаревшие блоки таблицы подстановки. |
| Блоки 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. | Задайте параметр блока Действие, если какому-либо выходному элементу не присвоено одно из рекомендуемых значений:
|
Выполняется для библиотечных моделей.
Анализ содержимого связанных блоков библиотеки.
Анализирует содержимое в маскированных подсистемах.
При наличии лицензии 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.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.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.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.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.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». |
MISRA C:2012: Правило 2.1
CERT C, MSC07-C
CWE, CWE-561
Стандарты безопасного кодирования (встроенный кодер)
Обнаружение неработающей логики, вызванной неправильным значением (Simulink Design Verifier)
Панель проверки проекта: обнаружение ошибок проекта (Simulink Design Verifier)
Код чека: mathworks.sldv.integeroverflow
Обнаружение ошибок переполнения целочисленных или фиксированных данных в модели
Эта проверка определяет операции, которые превышают диапазон типов данных для целочисленных операций или операций с фиксированной точкой.
Выполнение рекомендаций этой проверки повышает вероятность создания кода, соответствующего MISRA C:2012, для встраиваемых приложений, а также кода, соответствующего стандартам CERT C, CWE, ISO/IEC TS 17961.
| Результат | Рекомендуемое действие |
|---|---|
| Сбой, модель несовместима | Устраните несовместимость модели. Посмотрите
Также см. раздел Обработка несовместимости с автоматическим остановом (Simulink Design Verifier). |
| В модели обнаружено целочисленное переполнение |
Для просмотра условий, вызывающих переполнение целого числа, создайте модель электрического жгута. При моделировании электрического жгута входные данные повторяют ошибку. Щелкните Просмотреть тестовый случай (View test case) в отчете Model Advisor. |
MISRA C:2012: Директива 4.1
ISO/IEC TS 17961:2013, введение
CERT C, INT30-C и INT32-C
CWE, CWE-190
Стандарты безопасного кодирования (встроенный кодер)
Обнаружение ошибок конструкции (Simulink Design Verifier)
Обнаружение переполнения целого числа и ошибок деления на ноль (Simulink Design Verifier)
Код чека: mathworks.sldv.divbyzero
Обнаружение ошибок деления на ноль в модели
Эта проверка определяет операции в модели, которые вызывают ошибки деления на ноль.
Выполнение рекомендаций этой проверки повышает вероятность создания кода, соответствующего MISRA C:2012, для встраиваемых приложений, а также кода, соответствующего стандартам CERT C, CWE, ISO/IEC TS 17961.
| Результат | Рекомендуемое действие |
|---|---|
| Сбой, модель несовместима | Устраните несовместимость модели. Посмотрите
Также см. раздел Обработка несовместимости с автоматическим остановом (Simulink Design Verifier). |
| В модели найдено деление на ноль |
Чтобы просмотреть условия, вызывающие деление на ноль, создайте модель электрического жгута. При моделировании электрического жгута входные данные повторяют ошибку. Щелкните Просмотреть тестовый случай (View test case) в отчете Model Advisor. |
MISRA C:2012: Директива 4.1
ISO/IEC TS 17961:2013, diversr
CERT C, INT33-C и FLP03-C
CWE, CWE-369
Стандарты безопасного кодирования (встроенный кодер)
Обнаружение ошибок конструкции (Simulink Design Verifier)
Обнаружение переполнения целого числа и ошибок деления на ноль (Simulink Design Verifier)
Код чека: mathworks.sldv.arraybounds
Обнаруживает операции, доступ к которым осуществляется за пределами индекса массива
Эта проверка обнаруживает экземпляры доступа к массиву за пределами границ в Simulink Design Verifier.
Выполнение рекомендаций этой проверки повышает вероятность создания кода, соответствующего MISRA C:2012, для встраиваемых приложений, а также кода, соответствующего стандартам CERT C, CWE, ISO/IEC TS 17961.
| Результат | Рекомендуемое действие |
|---|---|
| Сбой, модель несовместима | Устраните несовместимость модели. Посмотрите
Также см. раздел Обработка несовместимости с автоматическим остановом (Simulink Design Verifier). |
| В модели обнаружен доступ вне связанного массива |
Чтобы просмотреть условия, вызывающие доступ к массиву вне границ, создайте модель кабельных трасс. При моделировании электрического жгута входные данные повторяют ошибку. Щелкните Просмотреть тестовый случай (View test case) в отчете Model Advisor. |
MISRA C:2012: правило 18.1
ISO/IEC TS 17961:2013, invptr
CERT C, ARR30-C
CWE, CWE-118
Стандарты безопасного кодирования (встроенный кодер)
Обнаружение ошибок конструкции (Simulink Design Verifier)
Обнаружение ошибок доступа к границам массива (Simulink Design Verifier)
Код чека: mathworks.sldv.minmax
Обнаружение сигналов, превышающих указанные минимальные и максимальные значения
Этот анализ проверяет указанные минимальное и максимальное значения (диапазоны проектирования) на промежуточных сигналах в модели и на выходных портах. Если анализ обнаруживает, что сигнал превышает проектный диапазон, результаты определяют, где в модели произошли ошибки.
Выполнение рекомендаций этой проверки повышает вероятность создания кода, соответствующего MISRA C:2012, для встраиваемых приложений, а также кода, соответствующего стандартам CERT C и CWE.
| Результат | Рекомендуемое действие |
|---|---|
| Сбой, модель несовместима | Устраните несовместимость модели. Посмотрите
Также см. раздел Обработка несовместимости с автоматическим остановом (Simulink Design Verifier). |
| Нарушение минимума и/или максимума, обнаруженных в модели |
Для просмотра условий, вызывающих нарушение, создайте модель электрического жгута. При моделировании электрического жгута входные данные повторяют ошибку. Щелкните Просмотреть тестовый случай (View test case) в отчете Model Advisor. |
MISRA C:2012: Директива 4.1
CERT C, API00-C
CWE, CWE-628
Стандарты безопасного кодирования (встроенный кодер)
Проверка диапазона проектирования (Simulink Design Verifier)
Проверка указанных нарушений минимального и максимального значений (Simulink Design Verifier)