exponenta event banner

Правила 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 0-3-2Если функция генерирует информацию об ошибке, то эта информация об ошибке должна быть проверена
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Последовательность символов/* не должна использоваться в комментарии в стиле Си
MISRA C++:2008 Rule 2-7-2Разделы кода не должны быть «прокомментированы» с помощью комментариев в стиле Си
MISRA C++:2008 Rule 2-7-3Разделы кода не следует «комментировать» с помощью комментариев стиля C++
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Восьмеричные константы (отличные от нуля) и восьмеричные escape-последовательности (отличные от «\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Выражения с перечислением типов не должны использоваться в качестве операндов для построения операторов, отличных от оператора подстрочного индекса [], оператора назначения =, операторов равенства = и! =, унарного & оператора и реляционных операторов <, < =, >, > =
MISRA C++:2008 Rule 4-5-3Выражения с типом (равнина) случайная работа и wchar_t не должны использоваться в качестве операндов встроенным операторам кроме оператора назначения =, операторы равенства == и! =, и одноместное & оператор Н.
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Не должно быть явных плавающих-интегральных преобразований выражения значения
MISRA C++:2008 Rule 5-0-8Явное преобразование интеграла или с плавающей запятой не должно увеличивать размер базового типа выражения значения
MISRA C++:2008 Rule 5-0-9Явное интегральное преобразование не должно изменять сигнатуру базового типа выражения значения
MISRA C++:2008 Rule 5-0-10Если побитовые операторы ~ и < < применяются к операнду с нижележащим типом неподписанного символа или неподписанным коротким, результат немедленно приводится к нижележащему типу операнда.
MISRA C++:2008 Rule 5-0-11Тип простого символа должен использоваться только для хранения и использования символьных значений
MISRA C++:2008 Rule 5-0-12Подписанный символ и неподписанный тип символа должны использоваться только для хранения и использования числовых значений
MISRA C++:2008 Rule 5-0-13Условие if-оператора и условие iteration- оператора должны иметь тип 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Объект с целым типом или указатель на тип void не должен преобразовываться в объект с типом указателя
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 должен выполняться только в строке самостоятельно; за ним может следовать комментарий при условии, что первый символ, следующий за оператором 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Оператор переключения должен быть хорошо сформированным оператором переключения
MISRA C++:2008 Rule 6-4-4Метка switch должна использоваться только в том случае, если самым близким составным оператором является тело оператора switch.
MISRA C++:2008 Rule 6-4-5Заявление о безусловном сбросе или разрыве прекращает действие каждого непустого пункта о переключении
MISRA C++:2008 Rule 6-4-6Последним пунктом заявления о переключении является пункт по умолчанию.
MISRA C++:2008 Rule 6-4-7Состояние оператора переключения не должно иметь тип bool
MISRA C++:2008 Rule 6-4-8Каждый оператор переключения должен иметь, по крайней мере, один вариант
MISRA C++:2008 Rule 6-5-1Шлейф для должен содержать один шлейф-счетчик, который не должен иметь плавающего типа
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Оператор continue должен использоваться только в хорошо сформированном цикле для
MISRA C++:2008 Rule 6-6-4Для любого оператора итерации должно быть не более одного перерыва или оператора goto, используемого для завершения цикла
MISRA C++:2008 Rule 6-6-5Функция должна иметь единственную точку выхода в конце функции
MISRA C++:2008 Rule 7-1-1Переменная, которая не была изменена, должна быть квалифицирована как const
MISRA C++:2008 Rule 7-1-2Указатель или ссылочный параметр в функции объявляется как указатель на конст или ссылка на конст, если соответствующий объект не изменен
MISRA C++:2008 Rule 7-3-1Глобальное пространство имен должно содержать только основные, объявления пространства имен и внешние объявления «C»
MISRA C++:2008 Rule 7-3-2Идентификатор main не должен использоваться для функции, отличной от глобальной функции main
MISRA C++:2008 Rule 7-3-3В файлах заголовков не должно быть безымянных пространств имен
MISRA C++:2008 Rule 7-3-4использование - директивы не должны использоваться
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Инструкции по сборке должны вводиться только с использованием асм-декларации
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-declarator-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Все пути выхода из функции с типом возврата non-void должны иметь явную инструкцию return с выражением
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 не должны возвращать указатели non-const или ссылки на данные класса
MISRA C++:2008 Rule 9-3-2Функции-члены не должны возвращать дескрипторы non-const в данные класса
MISRA C++:2008 Rule 9-3-3Если функция элемента может быть сделана статичной, то она должна быть сделана статичной, в противном случае, если она может быть сделана const, то она должна быть сделана const
MISRA C++:2008 Rule 9-5-1Профсоюзы не должны использоваться
MISRA C++:2008 Rule 9-6-2Битовые поля должны быть либо логического типа, либо явно неподписанного или подписанного интегрального типа
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Каждая переопределяющая виртуальная функция должна быть объявлена с помощью ключевого слова virtual
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-1Назначение-выражение оператора throw не должно само по себе вызывать исключение
MISRA C++:2008 Rule 15-1-2Значение NULL не должно передаваться явным образом
MISRA C++:2008 Rule 15-1-3Пустой бросок (бросок;) должен использоваться только в компаундировании обработчика улова
MISRA C++:2008 Rule 15-3-1Исключения должны быть возбуждены только после запуска и до прекращения программы
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-block предусмотрено несколько обработчиков для производного класса и некоторых или всех его баз, обработчики должны быть упорядочены наиболее производными для базового класса.
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# include directions в файле должны предшествовать только другие директивы или комментарии препроцессора
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 должна следовать последовательность < имя _ файла > или «имя _ файла».
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Функции библиотеки atoi, atoi и atol из библиотеки < cstdlib > не должны использоваться
MISRA C++:2008 Rule 18-0-3Функции библиотеки прерывание, выход, 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 > не должна использоваться

Темы

Полиспейс MISRA C++ шашки

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

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

Проверьте наличие нарушений стандартов AUTOSAR C++ 14, CERT ® C, CERT C++ MISRA C ®, MISRA C++, JSF AV C++ или ISO-17961 с помощью средства поиска ошибок или средства проверки кода.

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

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

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

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