MISRA C:2012 Податливости информационные Сводные данные таблицы идентифицируют руководства по моделированию, которые имеют отношение к податливости сгенерированного кода C со стандартами C:2012 кодирования MISRA. Список этих руководств и соответствующих проверок Model Advisor см. Моделирование систем повышенной надежности Руководствах по MISRA C:2012 Податливости. Для получения информации о обосновании MISRA для проверок Model Advisor, смотрите MISRA C:2012 Rationale для проверок Model Advisor.
Чтобы дополнить руководства по моделированию, разработанные Консультативным советом MathWorks (MAB), MathWorks® опубликовал набор руководств по моделированию, который особое внимание на приложения повышенной надежности.
Многие руководства по моделированию высокой целостности имеют проверки Model Advisor, которые можно использовать, чтобы проверить приверженность вашей модели руководству. Эта таблица определяет руководства по моделированию высокой целостности и обеспечивает соответствующую проверку Model Advisor. Не все руководства по моделированию имеют соответствующую проверку Model Advisor.
Эта таблица содержит обоснование C:2012 MISRA для проверок Model Advisor.
Проверка Model Advisor | MISRA 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 значение | Общие рекомендации для встраиваемых систем. | |
Очистить 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 значение | Необходимое условие к параметр конфигурации <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 установлено на | 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: Приоритет операторов в выражениях должен быть четко определен. | |
Устаревшие блоки интерполяционной таблицы. Конкретными блоками являются:
| 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 должно быть уникальным идентификатором. |