Эти проверки используются, чтобы подтвердить тот код, сгенерированный Embedded Coder®, выполняет CERT C, CWE и ISO/IEC TS 17961 (Embedded Coder) безопасные стандарты кодирования.
ID проверки: mathworks.security.CodeGenSettings
Идентифицируйте параметры конфигурации, которые могут повлиять на соответствие с безопасными стандартами кодирования.
В соответствии с рекомендациями этих увеличений проверки вероятность генерации кодирует, который выполняет CERT C, CWE, ISO/IEC TS 17961 безопасные стандарты кодирования.
Доступный с Embedded Coder и Simulink® Check™.
Условие | Рекомендуемое действие |
---|---|
Diagnostics | |
Параметр конфигурации Inf or NaN block output установлен в none . | Установите Inf or NaN block output на warning или error . |
Параметр конфигурации Model Verification block enabling установлен в Use local settings или Enable All . | Установите Model Verification block enabling на Disable All . |
Параметр конфигурации Undirected event broadcasts установлен в none или warning . | Установите Undirected event broadcasts на error . |
Параметр конфигурации Wrap on overflow установлен в none . | Установите Wrap on overflow на warning или error . |
Hardware Implementation | |
Параметр конфигурации Production hardware signed integer division rounds to установлен в Undefined . | Установите Production hardware signed integer division rounds to на Zero или Floor . |
Параметр конфигурации Shift right on a signed integer as arithmetic shift выбран. | Очистите Shift right on a signed integer as arithmetic shift . |
Simulation Target | |
Параметр конфигурации Compile-time recursion limit for MATLAB functions установлен в значение кроме 0 . | Установите Compile-time recursion limit for MATLAB functions на 0 . |
Параметр конфигурации Dynamic memory allocation in MATLAB functions выбран. | Очистите Dynamic memory allocation in MATLAB functions. |
Параметр конфигурации Enable run-time recursion for MATLAB functions выбран. | Очистите Enable run-time recursion for MATLAB functions. |
Code Generation | |
Параметр конфигурации Code replacement library не установлен в None или AUTOSAR 4.0 . | Установите Code replacement library на None или AUTOSAR 4.0 . |
Параметр конфигурации External mode выбран. | Очистите External mode. |
Параметр конфигурации Include comments очищен. | Выберите Include comments. |
Параметр конфигурации MAT-file logging выбран. | Очистите MAT-file logging. |
Для основанных на ERT целевых систем параметр конфигурации очищен MATLAB user comments. | Выберите MATLAB user comments. |
Параметр конфигурации Replace multiplications by powers of two with signed bitwise shifts выбран. | Очистите Replace multiplications by powers of two with signed bitwise shifts. |
Для основанных на ERT целевых систем параметр конфигурации выбран Support continuous time | Очистите Support continuous time. |
Параметр конфигурации Support non-finite numbers выбран. | Очистите Support: non-finite numbers |
Для основанных на ERT целевых систем параметр конфигурации выбран Support non-inlined S-functions | Очистите Support non-inlined S-functions. |
Параметр конфигурации System target file установлен в основанную на GRT цель. | Установите System target file на основанную на ERT цель. |
Параметр конфигурации Use dynamic memory allocation for model initialization выбран. | Очистите Use dynamic memory allocation for model initialization. |
Нажатие на Modify All изменяет значения параметров на рекомендуемые значения.
Подпроверки зависят от результатов подпроверок, отмеченных с D в таблице результатов в окне Model Advisor.
Безопасные стандарты кодирования (Embedded Coder)
ID проверки: mathworks.codegen.PCGSupport
Идентифицируйте блоки, не поддержанные генерацией кода или не рекомендуемые для производственного развертывания C/C++ кода.
Эта проверка частично идентифицирует образцовые построения, которые не рекомендуются для генерации производственного кода C/C++, как идентифицировано в таблицах Simulink Block Support (Simulink Coder) для Simulink Coder™ и Embedded Coder. Если вы используете блоки с примечаниями поддержки для генерации кода, рассматриваете информацию и следуете данному совету.
В соответствии с рекомендациями этих увеличений проверки вероятность генерации кодирует, который выполняет CERT C, CWE, стандарты ISO/IEC TS 17961.
Доступный с Embedded Coder и Simulink Check.
Условие | Рекомендуемое действие |
---|---|
Модель или подсистема содержат блоки, которые не должны использоваться для производственного развертывания кода. | Рассмотрите заменяющий блоки перечисленный в результатах. Кликните по элементу из списка сомнительных элементов, чтобы определить местоположение условия. |
Вы можете:
Осуществите эту проверку своих моделей библиотеки.
Анализирует содержимое соединенных блоков библиотеки.
Анализирует содержимое во всех подсистемах маскированных.
Исключите блоки и графики от этой проверки, если у вас есть лицензия Simulink Check.
Разовая редактированием Проверка. Эта проверка поддерживается разовой редактированием проверкой.
ID проверки: mathworks.security.BlockSupport
Идентифицируйте блоки, не рекомендуемые для соответствия с безопасными стандартами кодирования.
В соответствии с рекомендациями этих увеличений проверки вероятность генерации кодирует, который выполняет CERT C, CWE, ISO/IEC TS 17961 безопасные стандарты кодирования.
Доступный с Embedded Coder и Simulink Check.
Условие | Рекомендуемое действие |
---|---|
Блоки Интерполяционной таблицы с помощью интерполяции кубическим сплайном или методов экстраполяции были найдены в модели или подсистеме. Определенные блоки:
| Рассмотрите другие методы интерполяции и экстраполяции для блоков Интерполяционной таблицы. |
Блоки Интерполяционной таблицы устаревшие были найдены в модели или подсистеме. Определенные блоки:
| Рассмотрите заменяющий блоки Интерполяционной таблицы устаревшие. |
Разработчик S-функции блоки был найден в модели или подсистеме. | Рассмотрите заменяющий Разработчика S-функции блоки на блоки рекомендуемый для производства. |
Из Рабочей области блоки были найдены в модели или подсистеме | Рассмотрите заменяющий От блоков Рабочей области с блоками рекомендуемый для производства. |
Блоки строки были найдены в модели или подсистеме. Определенные блоки:
| Рассмотрите заменяющий блоки Строки на блоки рекомендуемый для производства. |
Вы можете:
Осуществите эту проверку своих моделей библиотеки.
Исключите блоки и графики от этой проверки, если у вас есть лицензия Simulink Check.
Разовая редактированием Проверка. Эта проверка поддерживается разовой редактированием проверкой.
ID проверки: mathworks.misra.AssignmentBlocks
Идентифицируйте блоки Присвоения, которые не имеют параметров блоков набором 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.
Условие | Рекомендуемое действие |
---|---|
Модель или подсистема могут содержать блоки Присвоения с неполной инициализацией массивов, которые не имеют параметров блоков набором 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
hisl_0029: Использование блоков Присвоения (Simulink)
MISRA C инструкции (Embedded Coder)
Факторы соответствия MISRA C:2012 (Simulink)
Безопасные стандарты кодирования (Embedded Coder)
ID проверки: mathworks.misra.SwitchDefault
Идентифицируйте case-выражения переключателя, которые не имеют случая по умолчанию.
Проверка отмечает объекты модели, которые имеют case-выражения переключателя без случая по умолчанию.
В соответствии с рекомендациями этих увеличений проверки вероятность генерации MISRA C:2012 совместимый код для встраиваемых приложений, а также код, который выполняет CERT C, CWE, стандарты ISO/IEC TS 17961.
Проверка не отмечает блоки без случаев по умолчанию, если они выравниваются по ширине с аннотацией Polyspace®. Когда вы осуществляете проверку, блоки списков таблиц Blocks with justification без случаев по умолчанию, которые имеют выравнивание.
Доступный с Embedded Coder и Simulink Check.
Условие | Рекомендуемое действие |
---|---|
Объект модели имеет case-выражение переключателя без случая по умолчанию. | Для блоков Случая Переключателя считайте параметры блоков выбора Show default case, чтобы явным образом задать случай по умолчанию. |
Вы можете:
Осуществите эту проверку своих моделей библиотеки.
Исключите блоки и графики от этой проверки, если у вас есть лицензия 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)
ID проверки: mathworks.misra.CompliantCGIRConstructions
Идентифицируйте блоки Simulink, которые содержат битовые операции на целых числах со знаком.
В соответствии с рекомендациями этих увеличений проверки вероятность генерации MISRA C:2012 совместимый код для встраиваемых приложений, а также код, который выполняет CERT C и стандарты CWE.
Доступный с Embedded Coder и Simulink Check.
Эта проверка требует лицензии Stateflow®, когда Stateflow используется в модели.
Условие | Рекомендуемое действие |
---|---|
Модель имеет блоки, которые содержат битовые операции на целых числах со знаком. | Рассмотрите использование беззнакового целого для битовых операций. |
Вы можете:
Проверка принимает, что код сгенерирован для целой модели. Когда код сгенерирован сборкой подсистемы или экспортами функций, проверка может продукт неправильные результаты.
Исключите блоки и графики от этой проверки, если у вас есть лицензия Simulink Check.
MISRA C:2012, правило 10.1
CERT C, INT13-C
CWE, CWE-682
hisl_0060: Параметры конфигурации, которые улучшают соответствие MISRA C:2012 (Simulink)
Факторы соответствия MISRA C:2012 (Simulink)
Безопасные стандарты кодирования (Embedded Coder)
ID проверки: mathworks.misra.CompareFloatEquality
Идентифицируйте операции равенства и неравенства на значениях с плавающей точкой.
Проверка отмечает источники, вызывающие равенство или операции неравенства на значениях с плавающей точкой.
В соответствии с рекомендациями этих увеличений проверки вероятность генерации MISRA C:2012 совместимый код для встраиваемых приложений, а также код, который выполняет CERT C и стандарты CWE.
Проверка не отмечает блоки с помощью операций равенства или неравенства на значениях с плавающей точкой, если они выравниваются по ширине с аннотацией Polyspace. Когда вы осуществляете проверку, блоки списков таблиц Blocks with justification с операциями равенства или неравенства, которые имеют выравнивание.
Доступный с Embedded Coder и Simulink Check.
Условие | Рекомендуемое действие |
---|---|
Объект модели начинает операцию равенства или неравенства на значении с плавающей точкой. | Рассмотрите использование значений нес плавающей точкой для операций равенства или неравенства. |
Вы можете:
Исключите блоки и графики от этой проверки, если у вас есть лицензия Simulink Check.
MISRA C:2012, Dir 1.1
CERT C, FLP00-C
CWE, CWE-697
Аннотируйте код и скройте известные или приемлемые результаты (Polyspace Bug Finder)
Безопасные стандарты кодирования (Embedded Coder)
ID проверки: mathworks.misra.IntegerWordLengths
Идентифицируйте целочисленные размеры слова, которые не выполняют настройки аппаратной реализации
Проверка отмечает целые числа, размеры слова которых превышают количество битов, разрешенных через настройки аппаратной реализации.
В соответствии с рекомендациями этих увеличений проверки вероятность генерации MISRA C:2012 совместимый код для встраиваемых приложений, а также код, который выполняет CERT C и стандарты CWE.
Доступный с Embedded Coder и Simulink Check.
Условие | Рекомендуемое действие |
---|---|
Объект модели содержит целочисленные размеры слова, которые несовместимы с настройками аппаратной реализации. |
Обновите целое число, таким образом, его длина не превышает разрешенное количество битов. Можно просмотреть разрешенное количество битов в диалоговом окне Configuration Parameters на the Hardware Implementation> панель Device details. |
Вы можете:
Исключите блоки и графики от этой проверки, если у вас есть лицензия Simulink Check.
MISRA C:2012, правило 10.1
CERT C, INT13-C
CWE, CWE-682
MISRA C инструкции (Embedded Coder)
Безопасные стандарты кодирования (Embedded Coder)
ID проверки: 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 выберите Analysis> Design Verifier> Options. В панели Design Error Detection выберите Dead logic и Identify active logic. |
Мертвая логика, не найденная в модели | Simulink Design Verifier не нашел мертвую логику в модели. Возможно, что существуют цели, которые не решил этот анализ. Чтобы расширить результаты этого анализа, используйте поиск ошибок проектирования Simulink Design Verifier, чтобы также идентифицировать активную логику. Из Редактора Simulink выберите Analysis> Design Verifier> Options. В панели Design Error Detection выберите Dead logic и Identify active logic. |
MISRA C:2012: правило 2.1
CERT C, MSC07-C
CWE, CWE-561
Осуществите образцовые проверки (Simulink)
Безопасные стандарты кодирования (Embedded Coder)
Обнаружьте мертвую логику, вызванную неправильным значением (Simulink Design Verifier)
Панель верификатора проекта: поиск ошибок проектирования (Simulink Design Verifier)
ID проверки: 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)
ID проверки: 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, дайвер
CERT C, INT33-C и FLP03-C
CWE, CWE-369
Безопасные стандарты кодирования (Embedded Coder)
Поиск ошибок проектирования (Simulink Design Verifier)
Обнаружьте ошибки целочисленного переполнения и деления на нуль (Simulink Design Verifier)
ID проверки: 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)
ID проверки: 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)