Polyspace может проверить ваш код на соответствие стандарту кодирования MISRA C++ 2008. Используйте Check MISRA C++ rules (-misra-cpp)
опция анализа для активации подмножеств правил.
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 | Последовательность символов/* не должна использоваться в комментарии 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-4 | using-директивы не должны использоваться |
MISRA C++:2008 Rule 7-3-5 | Многочисленные объявления для идентификатора в том же пространстве имен не должны перекрывать объявление использования для этого идентификатора |
MISRA C++:2008 Rule 7-3-6 | using-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-1 | init-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-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-блоке для производного класса и некоторых или всех его основ, обработчики должны быть упорядочены наиболее производным к базовому классу |
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++.
Проверяйте на нарушения стандарта кодирования
Проверка на нарушения 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.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.