Руководства по моделированию для MISRA C:2012 Податливости

MISRA C:2012 Податливости информационные Сводные данные таблицы идентифицируют руководства по моделированию, которые имеют отношение к податливости сгенерированного кода C со стандартами C:2012 кодирования MISRA. Список этих руководств и соответствующих проверок Model Advisor см. Моделирование систем повышенной надежности Руководствах по MISRA C:2012 Податливости. Для получения информации о обосновании MISRA для проверок Model Advisor, смотрите MISRA C:2012 Rationale для проверок Model Advisor.

Моделирование систем повышенной надежности руководящие принципы для MISRA C:2012 Податливости

Чтобы дополнить руководства по моделированию, разработанные Консультативным советом MathWorks (MAB), MathWorks® опубликовал набор руководств по моделированию, который особое внимание на приложения повышенной надежности.

Многие руководства по моделированию высокой целостности имеют проверки Model Advisor, которые можно использовать, чтобы проверить приверженность вашей модели руководству. Эта таблица определяет руководства по моделированию высокой целостности и обеспечивает соответствующую проверку Model Advisor. Не все руководства по моделированию имеют соответствующую проверку Model Advisor.

Руководство по высокой целостностиПроверка Model Advisor
hisl_0001: Использование блока AbsПроверяйте использование блоков Abs (Проверка Simulink)
hisl_0002: Использование блоков Math Function (rem и returcal)Проверяйте использование блоков Math Function (rem и обратные функции) (Проверка Simulink)
hisl_0005: Использование блоков продуктаНе применяется
hisl_0006: Использование блоков ИтераторПроверяйте использование блоков Итератор (Проверка Simulink)
hisl_0008: Использование для блоков IteratorПроверяйте использование блоков For Iterator (Проверка Simulink)
hisl_0010: Использование блоков If и блоков Подсистемы Действий IfПроверяйте использование блоков If и блоков If Action Subsystem (Проверка Simulink)
hisl_0011: Использование блоков Switch Case и блоков Action SubsystemПроверяйте использование блоков Switch Case и блоков Switch Case Action Subsystem (Проверка Simulink)
hisl_0016: Использование блоков, которые вычисляют реляционные операторыПроверяйте блоки Relational Operator, которые приравнивают типы с плавающей точкой (Проверка Simulink)
hisl_0017: Использование блоков, которые вычисляют реляционные операторы (2)Проверяйте использование блоков Relational Operator (Проверка Simulink)
hisl_0018: Использование блока Логического ОператораПроверяйте использование блоков Логического Оператора (Проверка Simulink)
hisl_0019: Использование побитовых операцийПроверяйте использование блоков битовой операции (Проверка Simulink)
hisl_0020: Блоки, не рекомендуемые для податливости C:2012 MISRA

Проверьте блоки, не рекомендуемые для развертывания производственного кода C/C + + (Simulink Check)

Проверяйте блоки, не рекомендуемые для C:2012 MISRA (Simulink Check)

hisl_0029: Использование блоков назначенияПроверяйте использование блоков Assignment (Проверка Simulink)
hisl_0032: Имена объектов моделиПроверяйте имена объектов модели (Проверка Simulink)
hisl_0045: Параметры конфигурации > Типы математики и данных > Реализуйте логические сигналы как логические данные (против double)Проверьте параметры оптимизации, связанные с безопасностью, для логических сигналов (Проверка Simulink)
hisl_0053: Параметры конфигурации > Генерация кода > Оптимизация > Удалить код из плавающей точки в целочисленные преобразования, которые переносят значения вне области значенийПроверяйте параметры оптимизации, связанные с безопасностью, для преобразований типов данных (Проверка Simulink)
hisl_0054: Параметры конфигурации > Генерация кода > Оптимизация > Удалить код, который защищает от арифметических исключений деленияПроверьте параметры оптимизации, связанные с безопасностью, для исключений из арифметики деления (Проверка Simulink)
hisl_0060: Параметры конфигурации, улучшающие податливость C:2012 MISRAПроверьте параметры конфигурации для C:2012 MISRA (Проверка Simulink)
hisl_0061: Уникальные идентификаторы для ясностиПроверяйте диаграммы Stateflow на уникально определенные объекты данных (Проверка Simulink)
hisl_0062: Глобальные переменные в графических функцияхПроверяйте глобальные переменные в графических функциях (Проверка Simulink)
hisl_0063: Длина пользовательских имен объектов для улучшения податливости C:2012 MISRAПроверяйте длину пользовательских имен объектов (Проверка Simulink)
hisl_0101: Избегайте инвариантных операций сравнения, чтобы улучшить податливость C:2012 MISRAНе применяется
hisl_0102: Тип данных переменных управления цикла для улучшения MISRA C:2012 податливостиПроверяйте тип данных переменных управления цикла (Проверка Simulink)
hisl_0314: Параметры конфигурации > Диагностика > Валидность данных > СигналыПроверьте параметры диагностики, связанные с безопасностью, для данных о сигнале (Проверка Simulink)
hisf_0003: Использование побитовых операцийПроверяйте использование побитовых операций в диаграммах Stateflow (Проверка Simulink)
hisf_0004: Защита от рекурсивных вызовов функций для улучшения податливости кодаНе применяется
hisf_0064: Сдвиньте операции для данных Stateflow, чтобы улучшить податливость кодаПроверяйте использование операций сдвига для данных Stateflow (Проверка Simulink)
hisf_0065: Введите операции приведения в Stateflow, чтобы улучшить податливость кодаПроверяйте операции назначения в диаграммах Stateflow (Проверка Simulink)
hisf_0211: Защита от использования унарных операторов в диаграммах Stateflow для улучшения податливости кодаПроверяйте диаграммы Stateflow для унарных операторов (Проверка Simulink)

MISRA C:2012 обоснование проверок Model Advisor

Эта таблица содержит обоснование C:2012 MISRA для проверок Model Advisor.

Проверка Model AdvisorMISRA C:2012 правило или директива
Проверьте параметры конфигурации для C:2012 MISRA (Simulink Check)
 Установите Use division for fixed-point net slope computation значение On или Use division for reciprocals of integers only.

MISRA C:2012 Правило 10.1: Операнды не должны быть несоответствующего существенного типа.

Установите Inf or NaN block output значение warning или error.

MISRA C:2012 Директива 4.1: Отказы во время работы должны быть сведены к минимуму

Установите Model Verification block enabling значение Disable All.

Общие рекомендации для встраиваемых систем.

Установите Undirected event broadcasts значение error.

MISRA C:2012 Правило 17.2: Функции не должны вызывать себя, прямо или косвенно

Установите значение параметра конфигурации Wrap on overflow равным warning или error.

MISRA C:2012 Директива 4.1: Отказы во время работы должны быть сведены к минимуму

Установите Production hardware signed integer division rounds to значение Zero или Floor.

MISRA C:2012 Правило 10.1: Операнды не должны быть несоответствующего существенного типа.

Очистить Shift right on a signed integer as arithmetic shift .

MISRA C:2012 Правило 10.1: Операнды не должны быть несоответствующего существенного типа.

Установите Compile-time recursion limit for MATLAB functions значение 0 .

MISRA C:2012 Правило 17.2: Функции не должны вызывать себя, прямо или косвенно

Очистить Dynamic memory allocation in MATLAB functions.

MISRA C:2012 Директива 4.12: Динамическое выделение памяти не должно использоваться.

MISRA C:2012 Правило 21.3: Не должны использоваться функции выделения и удаления памяти < stdlib.h >.

Очистить Enable run-time recursion for MATLAB functions.

MISRA C:2012 Правило 17.2: Функции не должны вызывать себя, прямо или косвенно

Установите Bitfield declarator type specifier значение uint_T.

MISRA C:2012 Правило 6.1: Битовые поля должны быть объявлены только с соответствующим типом

MISRA C:2012 Правило 6.2: Однобитовые именованные битовые поля не должны иметь тип со знаком

Установите Casting Modes значение Standards Compliant.

MISRA C:2012 Правила 10.x: Модель основного типа

Установите Code replacement library значение None или AUTOSAR 4.0

Общие рекомендации для встраиваемых систем.

Очистить External mode.

Общие рекомендации для встраиваемых систем.

MISRA C:2012 Директива 4.12 Динамическое выделение памяти не должно использоваться

MISRA C:2012 Правило 21.3 Функции выделения и удаления памяти < stdlib.h > не должны использоваться

MISRA C:2012 Правило 21.6 Входные/выходные функции Стандартной библиотеки не должны использоваться

Очистить Generate shared constants.

MISRA Правило 8.5: Внешний объект или функция должны быть объявлены один раз в одном и только одном файле

Очистить MAT-file logging

Общие рекомендации для встраиваемых систем.

Установите Maximum identifier length на зависимый от реализации предел. Значение по умолчанию является 31.

Правила C:2012 MISRA 5.1-9: Идентификаторы

Установите Parentheses level значение Maximum (Specify precedence with parentheses).

MISRA C:2012 Правило 12.1: Приоритет операторов в выражениях должен быть четко определен

Выберите Preserve static keyword in function declarations.

MISRA Правило 8.7: Функции и объекты не должны быть определены с помощью внешних редактирований, если они указаны только в одном модуле перевода

MISRA Правило 8.8: Статический спецификатор класса памяти должен использоваться во всех декларациях объектов и функций, имеющих внутреннее редактирование

Очистить Replace multiplications by powers of two with signed bitwise shifts.MISRA C:2012 Правило 10.1: Операнды не должны быть неуместного существенного типа

Установите Shared code placement значение Shared location

Необходимое условие к параметр конфигурации <reservedrangesplaceholder0>

Очистить Support continuous time.

Общие рекомендации для встраиваемых систем.

Очистить Support non-finite numbers

MISRA C:2012 Директива 4.1: Отказы во время работы должны быть сведены к минимуму

Очистить Support non-inlined S-functions.

Общие рекомендации для встраиваемых систем.

Установите System-generated identifiers значение Shortened.

MISRA C:2012 5.1: Внешние идентификаторы должны быть различными

MISRA C:2012 5.2: Идентификаторы, объявленные в тех же возможностях и пространстве имен, должны быть различными

MISRA C:2012 5.4: Идентификаторы макросов должны быть различными

MISRA C:2012 5.5: Идентификаторы должны отличаться от макро- имен

Установите System target file в целевое устройство на основе ERT.

Общие рекомендации для встраиваемых систем.

Очистить Use dynamic memory allocation for model initialization.

Выбирайте только, когда Code Interface Packaging установлено на Reusable Function.

MISRA C:2012 Директива 4.12: Динамическое выделение памяти не должно использоваться.

MISRA C:2012 Правило 21.3: Не должны использоваться функции выделения и удаления памяти < stdlib.h >.

EnableSignedLeftShifts - отключено

MISRA C:2012 Правило 10.1: Операнды не должны быть неуместного существенного типа

Проверьте блоки, не рекомендуемые для развертывания производственного кода C/C + +

Общие рекомендации для встраиваемых систем.

Проверяйте блоки, не рекомендуемые для MISRA C:2012
 

Интерполяционная таблица блокирует с помощью кубических методов сплайн интерполяции или экстраполяции.

Конкретными блоками являются:

MISRA C:2012 Правило 11.3: Приведение не должно выполняться между указателем на тип объекта и указателем на другой тип объекта.

MISRA C:2012 Правило 11.5: Преобразование не должно выполняться из указателя в пустое в указатель на объект.

MISRA C:2012 Правило 11.8: Отливка не должна удалять какую-либо несовпадающую или летучую проверку из типа, на который указывает указатель.

MISRA C:2012 Правило 11.9: Макрос NULL должен быть единственно разрешенной формой целочисленной нулевой константы указателя.

MISRA C:2012 Правило 12.1: Приоритет операторов в выражениях должен быть четко определен.

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

Конкретными блоками являются:

  • Интерполяционная таблица

  • Интерполяционная таблица (2-D)

MISRA C:2012 Правило 11.3: Приведение не должно выполняться между указателем на тип объекта и указателем на другой тип объекта.

MISRA C:2012 Правило 11.5: Преобразование не должно выполняться из указателя в пустое в указатель на объект.

MISRA C:2012 Правило 11.8: Отливка не должна удалять какую-либо несовпадающую или летучую проверку из типа, на который указывает указатель.

MISRA C:2012 Правило 11.9: Макрос NULL должен быть единственно разрешенной формой целочисленной нулевой константы указателя.

MISRA C:2012 Правило 12.1: Приоритет операторов в выражениях должен быть четко определен.

MISRA C:2012 Правило 12.2: Операнд правой руки оператора сдвига должен находиться в области значений от нуля до единицы меньше ширины в битах основного типа операнда левой руки.

S-Function Builder блоки

MISRA C:2012 Правило 8.4: Совместимое объявление должно быть видно, когда определен объект или функция с внешним редактированием.

MISRA C:2012 Правило 8.5: Внешний объект или функция объявляются один раз в одном и только одном файле.

From Workspace блоки

MISRA C:2012 Правило 18.4: Операторы +, -, + = и - = не должны применяться к выражению типа указателя.

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

Конкретными блоками являются:

MISRA C:2012 Директива 4.7: Если функция возвращает информацию об ошибке, то эта информация об ошибке должна быть проверена

MISRA C:2012 Правило 17.7: Используется значение, возвращаемое функцией, не имеющей пустого типа возврата

MISRA C:2012 Правило 21.6: Входные/выходные функции стандартной библиотеки не должны использоваться

Проверяйте на неподдерживаемые имена блоков (Simulink Check)

MISRA C:2012 Правило 3.1: Последовательности символов/* и//не должны использоваться в комментарии.

Проверяйте использование блоков Assignment (Simulink Check)MISRA C:2012 Правило 9.1: Значение объекта с автоматической длительностью хранения не должно считываться до его установки.
Проверяйте на выражения случая коммутатора без случая по умолчанию (Simulink Check)MISRA C:2012 Правило 16.4: Каждый оператор switch должен иметь метку по умолчанию.
Проверьте отсутствующие порты ошибок для интерфейсов приемника AUTOSAR (Simulink Check)

MISRA C:2012 Директива 4.7 Если функция возвращает информацию об ошибке, то эта информация об ошибке должна быть проверена.

MISRA C:2012 Правило 17.7: Используется значение, возвращаемое функцией, не имеющей пустого типа возврата.

Проверяйте на побитовые операции с целыми числами со знаком (Simulink Check)MISRA C:2012 Правило 10.1: Операнды не должны быть несоответствующего существенного типа.
Проверяйте на рекурсивные вызовы функции (Simulink Check)MISRA C:2012 Правило 17.2: Функции не должны вызывать себя, прямо или косвенно.
Проверяйте на равенство и неравенство операции над значениями с плавающей точкой (Simulink Check)MISRA C:2012 Директива 1.1: Любое определяемое реализацией поведение, от которого зависит выход программы, должно быть задокументировано и понято.
Проверяйте на отсутствующие квалификаторы const в функциях модели (Simulink Check)MISRA C:2012 Правило 8.13: Указатель должен указывать на тип, сертифицированный по возможности.
Проверяйте целочисленный размер слова (Simulink Check)MISRA C:2012 Правило 10.1: Операнды не должны быть несоответствующего существенного типа.
Проверяйте имена объектов шины, которые используются в качестве имен элементов шины (Simulink Check)

MISRA C:2012 Правило 10.1: Операнды не должны быть несоответствующего существенного типа.

MISRA C:2012 Правило 5.6: Имя typedef должно быть уникальным идентификатором.