MISRA C++: 2008 Правила

Описание и примеры MISRA® Рекомендации C++: 2008 поддерживаются в Polyspace®

Polyspace может проверить ваш код на соответствие стандарту кодирования MISRA C++ 2008. Используйте Check MISRA C++ rules (-misra-cpp) опция анализа для активации подмножеств правил.

Результаты Polyspace

расширить все

MISRA C++:2008 Rule 0-1-1Проект не должен содержать недостижимый код
MISRA C++:2008 Rule 0-1-2Проект не должен содержать недопустимых путей
MISRA C++:2008 Rule 0-1-3Проект не должен содержать неиспользованных переменных
MISRA C++:2008 Rule 0-1-4Проект не должен содержать энергонезависимых переменных POD, имеющих только одно использование
MISRA C++:2008 Rule 0-1-5Проект не должен содержать неиспользованных объявлений типов
MISRA C++:2008 Rule 0-1-7Значение, возвращаемое функцией, имеющей не-пустой тип возврата, который не является перегруженным оператором, всегда должно использоваться
MISRA C++:2008 Rule 0-1-9Мертвого кода не должно быть
MISRA C++:2008 Rule 0-1-10Каждая определенная функция вызывается по крайней мере один раз
MISRA C++:2008 Rule 0-1-11Не должно быть неиспользованных параметров (именованных или безымянных) в невиртуальных функциях
MISRA C++:2008 Rule 0-1-12В наборе параметров виртуальной функции и всех функций, которые ее переопределяют, не должно быть неиспользуемых параметров (именованных или безымянных)
MISRA C++:2008 Rule 0-2-1Объект не должен быть назначен перекрывающемуся объекту
MISRA C++:2008 Rule 1-0-1Весь код должен соответствовать ISO/IEC 14882:2003 «Стандарт C++ с техническим исправлением 1»
MISRA C++:2008 Rule 2-3-1Триграфы не должны использоваться
MISRA C++:2008 Rule 2-5-1Диграфы не должны использоваться
MISRA C++:2008 Rule 2-7-1Последовательность символов/* не должна использоваться в комментарии C-стиля
MISRA C++:2008 Rule 2-7-2Разделы кода не должны быть «закомментированы» с помощью комментариев в стиле C
MISRA C++:2008 Rule 2-7-3Разделы кода не должны быть «закомментированы» с помощью комментариев C++ -style
MISRA C++:2008 Rule 2-10-1Различные идентификаторы должны быть типографски однозначными
MISRA C++:2008 Rule 2-10-2Идентификаторы, объявленные во внутренних возможностях, не должны скрывать идентификатор, объявленный во внешних возможностях
MISRA C++:2008 Rule 2-10-3Имя typedef (включая проверку, если она имеется) должно быть уникальным идентификатором
MISRA C++:2008 Rule 2-10-4Класс, объединение или имя перечисления (включая проверку, если она имеется) должны быть уникальным идентификатором
MISRA C++:2008 Rule 2-10-5Имя идентификатора объекта или функции, не являющихся членами, со статической длительностью хранения не должно использоваться повторно
MISRA C++:2008 Rule 2-10-6Если идентификатор ссылается на тип, он также не должен относиться к объекту или функции в тех же возможностях
MISRA C++:2008 Rule 2-13-1Должны использоваться только те эвакуационные последовательности, которые определены в ISO/IEC 14882:2003
MISRA C++:2008 Rule 2-13-2Восьмеричные константы (кроме нуля) и восьмеричные выходные последовательности (кроме «\0 ») не должны использоваться
MISRA C++:2008 Rule 2-13-3Суффикс «U» применяется ко всем восьмеричным или шестнадцатеричным целочисленным буквам беззнакового типа
MISRA C++:2008 Rule 2-13-4Буквальные суффиксы должны быть верхними
MISRA C++:2008 Rule 2-13-5Узкие и широкие строковые литералы не должны быть сцеплены
MISRA C++:2008 Rule 3-1-1Должно быть возможно включать любой заголовочный файл в несколько модули перевода, не нарушая правила единого определения
MISRA C++:2008 Rule 3-1-2Функции не должны быть объявлены в блочных возможностях
MISRA C++:2008 Rule 3-1-3Когда массив объявлен, его размер должен быть указан явно или определен неявно путем инициализации
MISRA C++:2008 Rule 3-2-1Все объявления объекта или функции должны иметь совместимые типы
MISRA C++:2008 Rule 3-2-2Правило единого определения не нарушается
MISRA C++:2008 Rule 3-2-3Тип, объект или функция, которая используется в нескольких модулях перевода, должны быть объявлены в одном и только одном файле
MISRA C++:2008 Rule 3-2-4Идентификатор с внешним редактированием должен иметь только одно определение
MISRA C++:2008 Rule 3-3-1Объекты или функции с внешним редактированием должны быть объявлены в заголовочном файле
MISRA C++:2008 Rule 3-3-2Если функция имеет внутреннее редактирование, все повторные объявления должны включать в себя статический спецификатор класса памяти
MISRA C++:2008 Rule 3-4-1Идентификатор, объявленный как объект или тип, должен быть определен в блоке, который минимизирует его видимость
MISRA C++:2008 Rule 3-9-1Типы, используемые для объекта, типа возврата функции или параметра функции, должны быть идентичными token for-token во всех объявлениях и повторных объявлениях
MISRA C++:2008 Rule 3-9-2вместо основных числовых типов следует использовать шрифты, указывающие на размер и сигнальность
MISRA C++:2008 Rule 3-9-3Базовые битовые представления значений с плавающей точкой не должны использоваться
MISRA C++:2008 Rule 4-5-1Выражения с типом bool не должны использоваться как операнды для встроенных операторов, кроме оператора назначения =, логических операторов &, ||,!, операторов равенства = = и! =, унарного & оператора и условного оператора
MISRA C++:2008 Rule 4-5-2Выражения с типом enum не должны использоваться как операнды для создания в операторах, отличных от оператора индекса [], оператора присвоения =, операторов равенства = = и! =, унарного & оператора и реляционных операторов <, < =, >, > =
MISRA C++:2008 Rule 4-5-3Выражения с типом (равнина) char и wchar_t не должны использоваться в качестве операндов к встроенным операторам кроме оператора назначения =, операторы равенства == и! =, и одноместное & оператор N
MISRA C++:2008 Rule 4-10-1Значение NULL не должно использоваться в качестве целого числа
MISRA C++:2008 Rule 4-10-2Буквальный нуль (0) не должен использоваться в качестве нуль-указателя-константы
MISRA C++:2008 Rule 5-0-1Значение выражения должно быть тем же самым в любом порядке оценки, который разрешает стандарт
MISRA C++:2008 Rule 5-0-2Ограниченная зависимость должна быть помещена в правила приоритета оператора C++ в выражениях
MISRA C++:2008 Rule 5-0-3Выражение cvalue не должно неявно преобразовываться в другой базовый тип
MISRA C++:2008 Rule 5-0-4Неявное интегральное преобразование не должно изменять сигнальность базового типа
MISRA C++:2008 Rule 5-0-5Не должно быть неявных преобразований с плавающим интегралом
MISRA C++:2008 Rule 5-0-6Неявное интегральное преобразование или преобразование с плавающей точкой не должно уменьшать размер базового типа
MISRA C++:2008 Rule 5-0-7Не должно быть явных плавающих-интегральных преобразований выражения cvalue
MISRA C++:2008 Rule 5-0-8Явное интегральное преобразование или преобразование с плавающей точкой не должно увеличивать размер базового типа выражения cvalue
MISRA C++:2008 Rule 5-0-9Явное интегральное преобразование не должно изменять сигнальность базового типа выражения cvalue
MISRA C++:2008 Rule 5-0-10Если побитовые операторы ~ и < < применяются к операнду с базовым типом беззнакового char или беззнакового short, результат должен быть немедленно приведен к базовому типу операнда
MISRA C++:2008 Rule 5-0-11Обычный тип char должен использоваться только для хранения и использования значений символов
MISRA C++:2008 Rule 5-0-12Подписанные char и беззнаковый тип char должны использоваться только для хранения и использования числовых значений
MISRA C++:2008 Rule 5-0-13Состояние оператора if и состояние итерация- оператор должно иметь тип bool
MISRA C++:2008 Rule 5-0-14Первый операнд условного оператора должен иметь тип bool
MISRA C++:2008 Rule 5-0-15Индексация массива должна быть единственной формой арифметики указателя
MISRA C++:2008 Rule 5-0-16Операнд указателя и любой указатель, полученный из арифметики указателя, использующей этот операнд, должны оба адресовать элементы одного массива.
MISRA C++:2008 Rule 5-0-17Вычитание между указателями должно применяться только к указателям, которые адресуют элементы одного массива
MISRA C++:2008 Rule 5-0-18>, > =, <, < = не должны применяться к объектам типа указателя, кроме тех случаев, когда они указывают на один и тот же массив
MISRA C++:2008 Rule 5-0-19Объявление объектов должно содержать не более двух уровней опосредования указателя
MISRA C++:2008 Rule 5-0-20Непостоянные операнды двоичному побитовому оператору должны иметь тот же базовый тип
MISRA C++:2008 Rule 5-0-21Битовые операторы должны применяться только к операндам неподписанного базового типа
MISRA C++:2008 Rule 5-2-1Каждый операнд логического & & или || должен быть постфиксным выражением
MISRA C++:2008 Rule 5-2-2Указатель на виртуальный базовый класс должен быть приведен только к указателю на производный класс посредством dynamic_cast
MISRA C++:2008 Rule 5-2-3Приведения из базового класса в производный класс не должны выполняться для полиморфных типов
MISRA C++:2008 Rule 5-2-4Отливки в стиле C (кроме отливок с пустыми данными) и отливки с функциональным обозначением (кроме явных вызовов конструктора) не должны использоваться
MISRA C++:2008 Rule 5-2-5Приведение не должно удалять какую-либо несовпадающую или изменчивую проверку из типа указателя или ссылки
MISRA C++:2008 Rule 5-2-6Приведение не должно преобразовывать указатель в функцию в любой другой тип указателя, включая указатель на тип функции
MISRA C++:2008 Rule 5-2-7Объект с типом указателя не должен преобразовываться в несвязанный тип указателя, прямо или косвенно
MISRA C++:2008 Rule 5-2-8Объект с целым типом или указатель на пустой тип не должен преобразовываться в объект с типом указателя
MISRA C++:2008 Rule 5-2-9Приведение не должно преобразовывать тип указателя в интегральный тип
MISRA C++:2008 Rule 5-2-10Операторы шага (+ +) и декремента (--) не должны смешиваться с другими операторами в выражении
MISRA C++:2008 Rule 5-2-11Оператор запятыми, & & оператор и оператор || не должны быть перегружены
MISRA C++:2008 Rule 5-2-12Идентификатор с типом массива, переданный как аргумент функции, не должен распадаться на указатель
MISRA C++:2008 Rule 5-3-1Каждый операнд! оператор, логический & & или логический || операторы должны иметь тип bool
MISRA C++:2008 Rule 5-3-2Оператор унарного минуса не применяется к выражению, базовый тип которого не подписан
MISRA C++:2008 Rule 5-3-3Унарный & оператор не должен быть перегружен
MISRA C++:2008 Rule 5-3-4Оценка операнда оператору размера не должна содержать побочных эффектов
MISRA C++:2008 Rule 5-8-1Операнд правой руки оператора сдвига должен лежать между нулем и на единицу меньше ширины в битах базового типа операнда левой руки
MISRA C++:2008 Rule 5-14-1Операнд правой руки логического & & или || оператора не должен содержать побочных эффектов
MISRA C++:2008 Rule 5-18-1Оператор запятыми не должен использоваться
MISRA C++:2008 Rule 5-19-1Оценка постоянных беззнаковых целочисленных выражений не должна приводить к переносу
MISRA C++:2008 Rule 6-2-1Операторы назначения не должны использоваться в подмножествах
MISRA C++:2008 Rule 6-2-2Выражения с плавающей точкой не должны быть прямо или косвенно проверены на равенство или неравенство
MISRA C++:2008 Rule 6-2-3Перед предварительной обработкой нулевой оператор должно происходить только в линии само по себе; за ним может последовать комментарий при условии, что первый символ, следующий за оператором null, является символом белого пространства
MISRA C++:2008 Rule 6-3-1Оператор, образующий тело коммутатора, в то время как, делать в то время или для оператора, должен быть составным оператором
MISRA C++:2008 Rule 6-4-1За конструкцией if (условие) следует составной оператор. За ключевым словом else следует либо составной оператор, либо другой оператор if
MISRA C++:2008 Rule 6-4-2Все, если еще конструкции должны быть прекращены с пунктом об ином
MISRA C++:2008 Rule 6-4-3Оператор switch должен быть хорошо сформированным оператором switch
MISRA C++:2008 Rule 6-4-4Метка switch-label должна использоваться только в том случае, если наиболее тесно связанный составной оператор является телом оператора switch
MISRA C++:2008 Rule 6-4-5Оператор безоговорочного переключения или пропуска прекращает действие каждого пункта о непустом переключателе
MISRA C++:2008 Rule 6-4-6Конечным пунктом оператора switch является положение по умолчанию
MISRA C++:2008 Rule 6-4-7Условие оператора switch не должно иметь типа bool
MISRA C++:2008 Rule 6-4-8Каждый оператор switch должен иметь по крайней мере один case-пункт
MISRA C++:2008 Rule 6-5-1Цикл for должен содержать один контур-счетчик, который не должен иметь плавающего типа
MISRA C++:2008 Rule 6-5-2Если счетчик цикла не изменяется -- или++, то в пределах условия счетчик цикла должен использоваться только в качестве операнда на < =, <, > или > =
MISRA C++:2008 Rule 6-5-3Счетчик цикла не должен быть изменен в пределах условия или оператора
MISRA C++:2008 Rule 6-5-4Счетчик цикла должен быть изменен одним из: --, + +, - = n или + = n; где n остается постоянным для длительности цикла
MISRA C++:2008 Rule 6-5-5Переменная цикла-управления, отличная от счетчика цикла, не должна изменяться в рамках условия или выражения
MISRA C++:2008 Rule 6-5-6Переменная loop-control, отличная от счетчика loop-counter, измененная в операторе, должна иметь тип bool
MISRA C++:2008 Rule 6-6-1Любая метка, на которую ссылается оператор goto, должна быть объявлена в том же блоке или в блоке, содержащем оператор goto
MISRA C++:2008 Rule 6-6-2Оператор goto должен перейти к метке, объявленной позже в том же теле функции
MISRA C++:2008 Rule 6-6-3Оператор продолжения должен использоваться только в хорошо сформированном цикле for
MISRA C++:2008 Rule 6-6-4Для любого оператора итерации должно быть не более одного оператора break или goto, используемого для завершения цикла
MISRA C++:2008 Rule 6-6-5Функция должна иметь одну точку выхода в конце функции
MISRA C++:2008 Rule 7-1-1Переменная, которая не изменяется, должна быть квалифицирована
MISRA C++:2008 Rule 7-1-2Указатель или ссылочный параметр в функции должны быть объявлены как указатель на const или ссылка на const, если соответствующий объект не изменен
MISRA C++:2008 Rule 7-3-1Глобальное пространство имен должно содержать только основные объявления пространства имен и внешние объявления «C»
MISRA C++:2008 Rule 7-3-2Основной идентификатор не должен использоваться для функции, отличной от основной глобальной функции
MISRA C++:2008 Rule 7-3-3В файлах заголовков не должно быть неназванных пространств имен
MISRA C++:2008 Rule 7-3-4using-директивы не должны использоваться
MISRA C++:2008 Rule 7-3-5Многочисленные объявления для идентификатора в том же пространстве имен не должны перекрывать объявление использования для этого идентификатора
MISRA C++:2008 Rule 7-3-6using-directives и using-declarations (исключая возможности или возможности функций using-declarations) не должны использоваться в файлах заголовков
MISRA C++:2008 Rule 7-4-2Инструкции ассемблера должны вводиться только с помощью объявления asm
MISRA C++:2008 Rule 7-4-3Язык сборки должен быть инкапсулирован и изолирован
MISRA C++:2008 Rule 7-5-1Функция не должна возвращать ссылку или указатель на автоматическую переменную (включая параметры), заданную в функции
MISRA C++:2008 Rule 7-5-2Адрес объекта с автоматическим хранением не должен быть присвоен другому объекту, который может сохраняться после прекращения существования первого объекта
MISRA C++:2008 Rule 7-5-3Функция не должна возвращать ссылку или указатель на параметр, который передается через ссылку или const
MISRA C++:2008 Rule 7-5-4Функции не должны вызывать себя, прямо или косвенно
MISRA C++:2008 Rule 8-0-1init-declarator-list или member-declator-list должны состоять из одного init-declarator или member-declarator соответственно
MISRA C++:2008 Rule 8-3-1Параметры в переопределяющей виртуальной функции должны либо использовать те же аргументы по умолчанию, что и функция, которую они переопределяют, либо не должны задавать какие-либо аргументы по умолчанию
MISRA C++:2008 Rule 8-4-1Функции не должны определяться с помощью эллипсиса обозначения
MISRA C++:2008 Rule 8-4-2Идентификаторы, используемые для параметров в повторном объявлении функции, должны быть идентичны идентификаторам в объявлении
MISRA C++:2008 Rule 8-4-3Все выходные пути из функции с типом возврата, не являющимся пустым, должны иметь явный оператор возврата с выражением
MISRA C++:2008 Rule 8-4-4Идентификатор функции должен либо использоваться для вызова функции, либо ему должны предшествовать &
MISRA C++:2008 Rule 8-5-1Все переменные должны иметь определенное значение перед использованием
MISRA C++:2008 Rule 8-5-2Скобки должны использоваться, чтобы указать и соответствовать структуре в ненулевой инициализации массивов и структур
MISRA C++:2008 Rule 8-5-3В списке перечислителей конструкция = не должна использоваться для явной инициализации представителей, отличных от первой, если только все элементы не инициализированы явно
MISRA C++:2008 Rule 9-3-1функции const представителя не должны возвращать неконстатные указатели или ссылки на данные классов
MISRA C++:2008 Rule 9-3-2Представители функции не должны возвращать неконстатные указатели в class-data
MISRA C++:2008 Rule 9-3-3Если функция представителя может быть сделана статической, то она должна быть сделана статической, в противном случае, если она может быть сделана const, то она должна быть сделана const
MISRA C++:2008 Rule 9-5-1Объединения не должны использоваться
MISRA C++:2008 Rule 9-6-2Битовые поля должны быть либо типа bool, либо явно беззнакового или подписанного интегрального типа
MISRA C++:2008 Rule 9-6-3Битовые поля не должны иметь тип перечисления
MISRA C++:2008 Rule 9-6-4Именованные битовые поля со знаком целого типа должны иметь длину более одного бита
MISRA C++:2008 Rule 10-1-1Классы не должны быть выведены из виртуальных основ
MISRA C++:2008 Rule 10-1-2Базовый класс должен быть объявлен виртуальным, только если он используется в иерархии алмазов
MISRA C++:2008 Rule 10-1-3Доступный базовый класс не должен быть как виртуальным, так и невирусным в одной иерархии
MISRA C++:2008 Rule 10-2-1Все доступные имена сущностей в множественной иерархии наследования должны быть уникальными
MISRA C++:2008 Rule 10-3-1Не должно быть более одного определения каждой виртуальной функции на каждом пути через иерархию наследования
MISRA C++:2008 Rule 10-3-2Каждая переопределяющая виртуальная функция должна быть объявлена с помощью виртуального ключевого слова
MISRA C++:2008 Rule 10-3-3Виртуальная функция должна быть переопределена только чистой виртуальной функцией, если она сама объявлена как чистая виртуальная
MISRA C++:2008 Rule 11-0-1Данные представителей в типах классов, отличных от POD, должны быть частными
MISRA C++:2008 Rule 12-1-1Динамический тип объекта не должен использоваться из тела его конструктора или деструктора
MISRA C++:2008 Rule 12-1-2Все конструкторы класса должны явным образом вызвать конструктор для всех его непосредственных базовых классов и всех виртуальных базовых классов
MISRA C++:2008 Rule 12-1-3Все конструкторы, которые могут вызываться с одним аргументом основного типа, должны быть объявлены явными
MISRA C++:2008 Rule 12-8-1Конструктор копирования должен инициализировать только свои базовые классы и нестатические представители класса, представителем которого он является
MISRA C++:2008 Rule 12-8-2Оператор назначения копии должен быть объявлен защищенным или частным в абстрактном классе
MISRA C++:2008 Rule 14-5-1Типовая функция, не являющаяся членом, должна объявляться только в пространстве имен, которое не является связанным пространством имен
MISRA C++:2008 Rule 14-5-2Конструктор копирования должен быть объявлен, когда существует конструктор шаблона с одним параметром, который является типовым параметром
MISRA C++:2008 Rule 14-5-3Оператор назначения копии объявляется, когда существует оператор назначения шаблона с параметром, который является типовым параметром
MISRA C++:2008 Rule 14-6-1В шаблоне класса с зависимой основой любое имя, которое может быть найдено в этой зависимой основе, должно упоминаться с использованием квалифицированного идентификатора или this- >
MISRA C++:2008 Rule 14-6-2Функция, выбранная разрешением перегрузки, должна разрешиться до функции, объявленной ранее в модуле перевода
MISRA C++:2008 Rule 14-7-3Все частичные и явные специализации для шаблона должны быть объявлены в том же файле, что и объявление их основного шаблона
MISRA C++:2008 Rule 14-8-1Перегруженные шаблоны функций не должны быть явно специализированными
MISRA C++:2008 Rule 14-8-2Жизнеспособный набор функций для вызова функции должен либо не содержать специализаций функций, либо содержать только специализации функций
MISRA C++:2008 Rule 15-0-2Объект исключения не должен иметь тип указателя
MISRA C++:2008 Rule 15-0-3Управление не должно передаваться в блок try или catch с помощью goto или оператора switch
MISRA C++:2008 Rule 15-1-2Значение NULL не должно передаваться явным образом
MISRA C++:2008 Rule 15-1-3Пустой бросок (бросок;) должен использоваться только в компаунд- оператора обработчика улавливания
MISRA C++:2008 Rule 15-3-2Должен быть по крайней мере один обработчик исключений, чтобы поймать все необработанные исключения
MISRA C++:2008 Rule 15-3-3Обработчики реализации function-try-block конструктора класса или деструктора не должны ссылаться на нестатические представители из этого класса или его основ
MISRA C++:2008 Rule 15-3-4Каждое исключение, явно выданное в коде, должно иметь обработчик совместимого типа во всех путях вызова, который может привести к этой точке
MISRA C++:2008 Rule 15-3-5Исключение типа класса должно всегда попадаться на ссылку
MISRA C++:2008 Rule 15-3-6Если несколько обработчиков предусмотрены в одном операторе try-catch или function-try-блоке для производного класса и некоторых или всех его основ, обработчики должны быть упорядочены наиболее производным к базовому классу
MISRA C++:2008 Rule 15-3-7В случае, когда в одном операторе try-catch или в блоке function-try-block предусмотрено несколько обработчиков, любой обработчик многоточия (catch-all) должен происходить последним
MISRA C++:2008 Rule 15-4-1Если функция объявлена со спецификацией исключения, то все объявления одной и той же функции (в других модулях преобразования) должны быть объявлены с тем же набором идентификаторов типов
MISRA C++:2008 Rule 15-5-1Деструктор классов не должен выходить за исключением
MISRA C++:2008 Rule 15-5-2Если объявление функции включает спецификацию исключения, функция должна быть способна выдавать только исключения указанного типа (типов)
MISRA C++:2008 Rule 15-5-3Функция terminate () не должна вызываться неявно
MISRA C++:2008 Rule 16-0-1# включить директивы в файл должны предшествовать только другие директивы предпроцессора или комментарии
MISRA C++:2008 Rule 16-0-2Макросы должны быть только # define 'd или # undef' d в глобальном пространстве имен
MISRA C++:2008 Rule 16-0-3# undef не должен использоваться
MISRA C++:2008 Rule 16-0-4Функциональные макросы не должны быть определены
MISRA C++:2008 Rule 16-0-5Аргументы в функциональный макрос не должны содержать лексемы, которые выглядят как директивы предварительной обработки
MISRA C++:2008 Rule 16-0-6В определении функционального макроса каждый образец параметра должен быть заключен в круглые скобки, если он не используется в качестве операнда # или # #
MISRA C++:2008 Rule 16-0-7Неопределенные идентификаторы макросов не должны использоваться в директивах предпроцессора # if или # elif, кроме как в качестве операндов определенному оператору
MISRA C++:2008 Rule 16-0-8Если лексема # появляется в качестве первой лексемы в линии, то за ним немедленная следует лексема предварительной обработки
MISRA C++:2008 Rule 16-1-1Определенный оператор препроцессора должен использоваться только в одной из двух стандартных форм
MISRA C++:2008 Rule 16-1-2Все директивы # else, # elif и # endif предпроцессора должны находиться в том же файле, что и директива # if или # ifdef, с которой они связаны
MISRA C++:2008 Rule 16-2-1Препроцессор должен использоваться только для включения файлов и включать защитные элементы
MISRA C++:2008 Rule 16-2-2Макросы C++ должны использоваться только для: включая защитные ограждения, классы типов или спецификаторы классов памяти
MISRA C++:2008 Rule 16-2-3Предусмотреть охрану
MISRA C++:2008 Rule 16-2-4Символы ', ",/* или//не должны присутствовать в имени файла заголовка
MISRA C++:2008 Rule 16-2-5Символ\не должен находиться в имени файла заголовка
MISRA C++:2008 Rule 16-2-6Директива # include должна сопровождаться последовательностью < filename > или «filename»
MISRA C++:2008 Rule 16-3-1Должно быть не более одного вхождения операторов # или # # в одном определении макроса
MISRA C++:2008 Rule 16-3-2Операторы # и # не должны использоваться
MISRA C++:2008 Rule 16-6-1Все виды применения директивы # pragma должны быть задокументированы
MISRA C++:2008 Rule 17-0-1Зарезервированные идентификаторы, макросы и функции в стандартной библиотеке не должны быть определены, переопределены или неопределены
MISRA C++:2008 Rule 17-0-2Имена стандартных библиотечных макросов и объектов не должны повторно использоваться
MISRA C++:2008 Rule 17-0-3Имена стандартных библиотечных функций не должны быть переопределены
MISRA C++:2008 Rule 17-0-5Макрос setjmp и функция longjmp не должны использоваться
MISRA C++:2008 Rule 18-0-1Библиотека C не должна использоваться
MISRA C++:2008 Rule 18-0-2Не должны использоваться библиотечные функции atof, atoi и atol из библиотеки < cstdlib >
MISRA C++:2008 Rule 18-0-3Функции библиотеки abort, exit, getenv и система из библиотеки < cstdlib > не должны использоваться
MISRA C++:2008 Rule 18-0-4Функции обработки времени библиотеки < ctime > не должны использоваться
MISRA C++:2008 Rule 18-0-5Неограниченные функции библиотеки < cstring > не должны использоваться
MISRA C++:2008 Rule 18-2-1Смещение макроса не должно использоваться
MISRA C++:2008 Rule 18-4-1Динамическое выделение памяти куча не должно использоваться
MISRA C++:2008 Rule 18-7-1Средства обработки сигналов < csignal > не должны использоваться
MISRA C++:2008 Rule 19-3-1Индикатор ошибки errno не должен использоваться
MISRA C++:2008 Rule 27-0-1Библиотека ввода/вывода потока < cstdio > не должна использоваться

Темы

Polyspace MISRA C++ Шашки

См. обзор поддержки Polyspace для стандарта MISRA C++.

Проверяйте на нарушения стандарта кодирования

Проверка на нарушения AUTOSAR C++ 14, CERT® C, CERT C++ MISRA C®, MISRA C++, JSF AV C++ или ISO-17961 стандарт с Bug Finder или Code Prover.

Целевые подмножества качества программного обеспечения (C++)

Посмотрите, какие правила MISRA C++ снижают сложность кода и уменьшают количество недоказанных проверок в Code Prover.

Неподдерживаемые правила кодирования MISRA C++

Посмотрите, какие правила MISRA C++ не поддерживаются в Polyspace.