Эти проверки используются для проверки кода, сгенерированного Embedded Coder® соответствует стандартам безопасного кодирования CERT C, CWE и ISO/IEC TS 17961 (Embedded Coder).
Проверяйте идентификатор: mathworks.security.CodeGenSettings
Идентифицируйте параметры конфигурации, которые могут повлиять на податливость стандартам безопасного кодирования.
Следование рекомендациям этой проверки увеличивает вероятность генерации кода, который соответствует стандартам безопасного кодирования CERT C, CWE, ISO/IEC TS 17961.
Доступно с Embedded Coder и Simulink® Check™.
Состояние | Рекомендуемое действие |
---|---|
Diagnostics | |
Значение параметра конфигурации <reservedrangesplaceholder1> Значение параметра конфигурации <reservedrangesplaceholder1> | Когда Support non-finite numbers есть:
|
Значение параметра конфигурации <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 | |
Значение параметра конфигурации Code replacement library не установлено на None или AUTOSAR 4.0 . | Установите Code replacement library значение None или AUTOSAR 4.0 . |
Выбран параметр конфигурации <reservedrangesplaceholder0>. | Очистить External mode. |
Параметр конфигурации <reservedrangesplaceholder0> сброшен. | Выберите Include comments. |
Выбран параметр конфигурации <reservedrangesplaceholder0>. | Очистить MAT-file logging. |
Для целевых систем на основе ERT параметров конфигурации <reservedrangesplaceholder0> очищается. | Выберите MATLAB user comments. |
Выбран параметр конфигурации <reservedrangesplaceholder0>. | Очистить Replace multiplications by powers of two with signed bitwise shifts. |
Для целевых систем на основе ERT выбирается параметр конфигурации <reservedrangesplaceholder0> | Очистить Support continuous time. |
Для целевых систем на основе ERT выбирается параметр конфигурации <reservedrangesplaceholder0> | Очистить Support non-inlined S-functions. |
Значение параметра конфигурации <reservedrangesplaceholder0> устанавливается на целевом устройстве на основе GRT. | Установите System target file в целевое устройство на основе ERT. |
Выбран параметр конфигурации <reservedrangesplaceholder0>. | Очистить Use dynamic memory allocation for model initialization. Примечание Выбирайте только, когда Code Interface Packaging установлено на |
При нажатии кнопки мыши Modify All значения параметров изменяются на рекомендуемые значения.
Примечание
При клике Modify All для моделей с целевым объектом на основе GRT, Model Advisor не обновляет параметр конфигурации System target file для системы на основе ERT.
Подчеки параметра зависят от результатов параметра, отмеченного D в таблице результатов. Когда результатом является D-Warning, в столбце Current Value в таблице результатов указывается, что ограничение «Предварительное условие» не соблюдается для подшеков. После изменения параметра перезапустите проверку.
Примечание
Некоторые подчеки характерны для параметров конфигурации для систем на основе ERT. Эти параметры не обновляются при нажатии кнопки мыши Modify All если вы не измените модель на систему на основе ERT.
Стандарты безопасного кодирования (Embedded Coder)
Проверяйте идентификатор: 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.
Эта проверка поддерживается проверкой во время редактирования.
Блоки и продукты, поддерживаемые для генерации кода (Simulink Coder)
Стандарты безопасного кодирования (Embedded Coder)
Проверяйте идентификатор: mathworks.security.BlockSupport
Идентифицируйте блоки, не рекомендуемые для податливости стандартам безопасного кодирования.
Следование рекомендациям этой проверки увеличивает вероятность генерации кода, который соответствует стандартам безопасного кодирования CERT C, CWE, ISO/IEC TS 17961.
Доступно с Embedded Coder и Simulink Check.
Состояние | Рекомендуемое действие |
---|---|
Интерполяционные таблицы блоки, использующие кубическую интерполяцию сплайн или методы экстраполяции, были найдены в модели или подсистеме. Конкретными блоками являются:
| Рассмотрите другие методы интерполяции и экстраполяции для блоков Интерполяционной таблицы. |
Устаревшие блоки Интерполяционной таблицы были найдены в модели или подсистеме. Конкретными блоками являются:
| Рассмотрите замену устаревших блоков интерполяционной таблицы. |
S-Function Builder блоки были найдены в модели или подсистеме. | Рассмотрите замену блоков S-Function Builder на блоки, рекомендуемые для производства. |
From Workspace блоки были найдены в модели или подсистеме | Рассмотрите замену блоков Из Рабочей области на блоки, рекомендуемые для производства. |
Строковые блоки были найдены в модели или подсистеме. Конкретными блоками являются:
| Рассмотрите замену строковых блоков на блоки, рекомендуемые для производства. |
Вы можете:
Запустите эту проверку на своих моделях библиотеки.
Исключить блоки и графики из этой проверки, если у вас есть лицензия Simulink Check.
Проверка во время редактирования. Эта проверка поддерживается проверкой во время редактирования.
Стандарты безопасного кодирования (Embedded Coder)
Проверяйте идентификатор: 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 параметров блоков в одно из рекомендуемых значений:
|
Работает на библиотечных моделях.
Анализирует содержимое библиотечно связанных блоков.
Анализирует содержимое маскированных подсистем.
Если у вас есть лицензия Simulink Check, разрешает исключения блоков и графиков.
Проверка во время редактирования. Эта проверка поддерживается проверкой во время редактирования. Однако следующее условие проверки не поддерживается, поскольку проверка во время редактирования не может определить, находится ли блок Assignment в подсистеме итератора.
Установите Action if any output element is not assigned параметров блоков в одно из рекомендуемых значений:
Error, если Assignment блок не находится в подсистеме итератора.
Warning, если Assignment блок находится в подсистеме итератора.
MISRA C:2012, правило 9.1
ISO/IEC TS 17961:2013, uninitref
CERT C, EXP33-C
CWE, CWE-908
Инструкции MISRA C (Embedded Coder)
Стандарты безопасного кодирования (Embedded Coder)
Проверяйте идентификатор: 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.
Проверка во время редактирования. Эта проверка поддерживается проверкой во время редактирования.
MISRA C:2012, правило 16.4
ISO/IEC TS 17961:2013, swtchdflt
CERT C, MSC01-C
CWE, CWE-478
Аннотировать код и скрыть известные или приемлемые результаты (Polyspace Bug Finder)
Стандарты безопасного кодирования (Embedded Coder)
Проверяйте идентификатор: mathworks.misra.CompliantCGIRConstructions
Идентифицируйте блоки Simulink, которые содержат побитовые операции над целыми числами со знаком.
Следование рекомендациям этой проверки увеличивает вероятность генерации MISRA C:2012 совместимого кода для встраиваемых приложений, а также кода, который соответствует стандартам CERT C и CWE.
Доступно с Embedded Coder и Simulink Check.
Для этой проверки требуется Stateflow® лицензия, когда Stateflow используется в модели.
Состояние | Рекомендуемое действие |
---|---|
Модель имеет блоки, которые содержат побитовые операции над целыми числами со знаком. | Рассмотрите использование беззнаковых целых чисел для побитовых операций. |
Вы можете:
Проверка предполагает, что код генерируется для всей модели. Когда код генерируется подсистемой build или экспортов функций, проверка может продукт неправильные результаты.
Исключить блоки и графики из этой проверки, если у вас есть лицензия Simulink Check.
MISRA C:2012, правило 10.1
CERT C, INT13-C
CWE, CWE-682
hisl_0060: Параметры конфигурации, улучшающие податливость C:2012 MISRA
Стандарты безопасного кодирования (Embedded Coder)
Проверяйте идентификатор: mathworks.misra.CompareFloatEquality
Идентифицируйте операции равенства и неравенства для значений с плавающей точкой.
Источники проверочных флагов, вызывающие операции равенства или неравенства для значений с плавающей точкой.
Следование рекомендациям этой проверки увеличивает вероятность генерации MISRA C:2012 совместимого кода для встраиваемых приложений, а также кода, который соответствует стандартам CERT C и CWE.
Проверка не помечает блоки с операциями равенства или неравенства для значений с плавающей точкой, если они обоснованы аннотацией Polyspace. Когда вы запускаете проверку, в Blocks with justification таблице перечисляются блоки с операциями равенства или неравенства, которые имеют обоснование.
Доступно с Embedded Coder и Simulink Check.
Для этой проверки требуется лицензия Stateflow.
Состояние | Рекомендуемое действие |
---|---|
Объект модели имеет операцию равенства или неравенства для значения с плавающей точкой. | Рассмотрите использование значений без плавающей точки для операций равенства или неравенства. |
Вы можете:
Исключить блоки и графики из этой проверки, если у вас есть лицензия Simulink Check.
MISRA C:2012, Dir 1.1
CERT C, FLP00-C
CWE, CWE-697
Аннотировать код и скрыть известные или приемлемые результаты (Polyspace Bug Finder)
Стандарты безопасного кодирования (Embedded Coder)
Проверяйте идентификатор: mathworks.misra.IntegerWordLengths
Идентифицируйте целочисленные размеры слова, которые не соответствуют настройкам аппаратной реализации
Флажки чеков означают целые числа, размеры слова которых превышают количество бит, разрешенных настройками аппаратной реализации.
Следование рекомендациям этой проверки увеличивает вероятность генерации MISRA C:2012 совместимого кода для встраиваемых приложений, а также кода, который соответствует стандартам CERT C и CWE.
Доступно с Embedded Coder и Simulink Check.
Состояние | Рекомендуемое действие |
---|---|
Объект модели содержит целочисленные размеры слова, которые не соответствуют настройкам аппаратной реализации. |
Обновите целое число так, чтобы его длина не превышала допустимое количество бит. Вы можете просмотреть допустимое количество бит в диалоговом окне Configuration Parameters, на панели Hardware Implementation > Device details. |
Вы можете:
Исключить блоки и графики из этой проверки, если у вас есть лицензия Simulink Check.
MISRA C:2012, правило 10.1
CERT C, INT13-C
CWE, CWE-682
Инструкции MISRA C (Embedded Coder)
Стандарты безопасного кодирования (Embedded Coder)
Проверяйте идентификатор: 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. В Configuration Parameters окне на панели Design Verifier > Design Error Detection выберите как Dead logic, так и Identify active logic. |
Мертвая логика не найдена в модели | Simulink Design Verifier не нашел в модели мертвой логики. Вполне возможно, что есть цели, которые этот анализ не решил. Чтобы расширить результаты этого анализа, используйте поиск ошибок проектирования Simulink Design Verifier, чтобы также идентифицировать активную логику. В редакторе Simulink выберите Apps > Design Verifier > Settings. В Configuration Parameters окне на панели Design Verifier > Design Error Detection выберите как Dead logic, так и Identify active logic. |
MISRA C:2012: Правило 2.1
CERT C, MSC07-C
CWE, CWE-561
Стандарты безопасного кодирования (Embedded Coder)
Обнаружение мертвой логики, вызванной неправильным значением (Simulink Design Verifier)
Проект Verifier Pane: Поиск ошибок проектирования (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, intoflow
CERT C, INT30-C и INT32-C
CWE, CWE-190
Стандарты безопасного кодирования (Embedded Coder)
Поиск ошибок проектирования (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, diverr
CERT C, INT33-C и FLP03-C
CWE, CWE-369
Стандарты безопасного кодирования (Embedded Coder)
Поиск ошибок проектирования (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
Стандарты безопасного кодирования (Embedded Coder)
Поиск ошибок проектирования (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
Стандарты безопасного кодирования (Embedded Coder)
Области значений проекта (Simulink Design Verifier)
Проверяйте на установленные нарушения минимального и максимального значений (Simulink Design Verifier)