Правила AUTOSAR C++ 14

Описание и список правил AUTOSAR C++ 14, поддерживаемых в Polyspace®

Polyspace может проверить ваш код на соответствие правилам AUTOSAR C++ 14. Используйте Check AUTOSAR C++14 (-autosar-cpp14) опция анализа для активации подмножеств правил.

Результаты Polyspace

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

AUTOSAR C++14 Rule A0-1-1Проект не должен содержать образцов энергонезависимых переменных с заданными значениями, которые впоследствии не используются
AUTOSAR C++14 Rule A0-1-2Должно использоваться значение, возвращаемое функцией, имеющей непустой тип возврата, который не является перегруженным оператором
AUTOSAR C++14 Rule A0-1-3Каждая функция, заданная в анонимном пространстве имен, или статическая функция с внутренним редактированием, или функция частного представителя, должна использоваться
AUTOSAR C++14 Rule A0-1-4В невирусных функциях не должно быть неиспользованных именованных параметров
AUTOSAR C++14 Rule A0-1-5Не должно быть неиспользованных именованных параметров в наборе параметров для виртуальной функции и всех функций, которые его переопределяют
AUTOSAR C++14 Rule A0-1-6Не должно быть неиспользованных объявлений типов
AUTOSAR C++14 Rule A0-4-2Тип длинный двойной не должен использоваться
AUTOSAR C++14 Rule M0-1-1Проект не должен содержать недостижимый код
AUTOSAR C++14 Rule M0-1-2Проект не должен содержать недопустимых путей
AUTOSAR C++14 Rule M0-1-3Проект не должен содержать неиспользованных переменных
AUTOSAR C++14 Rule M0-1-4Проект не должен содержать энергонезависимых переменных POD, имеющих только одно использование
AUTOSAR C++14 Rule M0-1-9Мертвого кода не должно быть
AUTOSAR C++14 Rule M0-1-10Каждая определенная функция должна вызываться по крайней мере один раз
AUTOSAR C++14 Rule M0-2-1Объект не должен быть назначен перекрывающемуся объекту
AUTOSAR C++14 Rule M0-3-2Если функция генерирует информацию об ошибке, эта информация об ошибке должна быть проверена
AUTOSAR C++14 Rule A1-1-1Весь код должен соответствовать ISO/IEC 14882:2014 - Языку программирования C++ и не должен использовать устаревшие функции
AUTOSAR C++14 Rule A2-3-1В исходном коде должны использоваться только символы, указанные в базовом наборе исходных символов стандарта C++ Language Standard.
AUTOSAR C++14 Rule A2-5-1Триграфы не должны использоваться
AUTOSAR C++14 Rule A2-5-2Диграф не должен использоваться
AUTOSAR C++14 Rule A2-7-1Символ\не должен быть последним символом комментария C++
AUTOSAR C++14 Rule A2-7-2Разделы кода не должны «комментироваться»
AUTOSAR C++14 Rule A2-7-3Всем объявлениям «определяемых пользователем» типов, статических и нестатических представителей данных, функций и методов должна предшествовать документация
AUTOSAR C++14 Rule A2-8-1Имя файла заголовка должно отражать логическую сущность, для которого он предоставляет объявления.
AUTOSAR C++14 Rule A2-8-2Имя файла реализации должно отражать логическую сущность, для которого оно предоставляет определения.
AUTOSAR C++14 Rule A2-10-1Идентификатор, объявленный во внутренних возможностях, не должен скрывать идентификатор, объявленный во внешних возможностях
AUTOSAR C++14 Rule A2-10-4Имя идентификатора объекта, не являющегося членом, со статической длительностью хранения или статическими функциями не должно повторно использоваться в пространстве имен
AUTOSAR C++14 Rule A2-10-5Имя идентификатора функции со статической длительностью хранения или объекта, не являющегося членом, с внешними или внутренними редактированиями не должно использоваться повторно
AUTOSAR C++14 Rule A2-10-6Имя класса или перечисления не должно быть скрыто объявлением переменной, функции или перечислителя в тех же возможностях
AUTOSAR C++14 Rule A2-11-1Недопустимое ключевое слово не должно использоваться
AUTOSAR C++14 Rule A2-13-1Должны использоваться только те эвакуационные последовательности, которые определены в ISO/IEC 14882:2014
AUTOSAR C++14 Rule A2-13-2Строковые литералы с различными префиксами кодирования не должны быть конкатенированы
AUTOSAR C++14 Rule A2-13-3Тип wchar_t не должен использоваться
AUTOSAR C++14 Rule A2-13-4Строковые литералы не должны назначаться непостоянным указателям
AUTOSAR C++14 Rule A2-13-5Шестнадцатеричные константы должны быть верхними
AUTOSAR C++14 Rule A2-13-6Универсальные имена символов должны использоваться только внутри символов или строковых литералов
AUTOSAR C++14 Rule M2-7-1Последовательность символов/* не должна использоваться в комментарии C-стиля
AUTOSAR C++14 Rule M2-10-1Различные идентификаторы должны быть типографски однозначными
AUTOSAR C++14 Rule M2-13-2Восьмеричные константы (кроме нуля) и восьмеричные выходные последовательности (кроме «\0 ») не должны использоваться
AUTOSAR C++14 Rule M2-13-3Суффикс «U» применяется ко всем восьмеричным или шестнадцатеричным целочисленным буквам беззнакового типа
AUTOSAR C++14 Rule M2-13-4Буквальные суффиксы должны быть верхними
AUTOSAR C++14 Rule A3-1-1Должно быть возможно включать любой заголовочный файл в несколько модули перевода, не нарушая правила единого определения
AUTOSAR C++14 Rule A3-1-2Заголовочные файлы, которые определены локально в проекте, должны иметь расширение имени файла одного из: .h, .hpp или .hxx
AUTOSAR C++14 Rule A3-1-3Файлы реализации, которые определены локально в проекте, должны иметь расширение имени файла. «cpp»
AUTOSAR C++14 Rule A3-1-4Когда заявлен массив с внешним редактированием, ее размер должен быть указан явно
AUTOSAR C++14 Rule A3-1-5Определение функции должно быть помещено в определение класса, только если (1) функция предназначена для встраивания (2) это представитель шаблон функции (3) это представитель функция шаблона класса
AUTOSAR C++14 Rule A3-1-6Тривиальные функции доступа и мутатора должны быть встроены
AUTOSAR C++14 Rule A3-3-1Объекты или функции с внешним редактированием (включая представители именованных пространств имен) должны быть объявлены в заголовочном файле
AUTOSAR C++14 Rule A3-3-2Статические и локальные объекты с потоками должны быть инициализированы постоянно
AUTOSAR C++14 Rule A3-8-1Доступ к объекту не допускается вне срока его службы
AUTOSAR C++14 Rule A3-9-1Вместо базовых числовых типов должны использоваться целые типы фиксированной ширины от < cstdint >, указывающие на размер и сигнальность
AUTOSAR C++14 Rule M3-1-2Функции не должны быть объявлены в блочных возможностях
AUTOSAR C++14 Rule M3-2-1Все объявления объекта или функции должны иметь совместимые типы
AUTOSAR C++14 Rule M3-2-2Правило единого определения не нарушается
AUTOSAR C++14 Rule M3-2-3Тип, объект или функция, которая используется в нескольких модулях перевода, должны быть объявлены в одном и только одном файле
AUTOSAR C++14 Rule M3-2-4Идентификатор с внешним редактированием должен иметь только одно определение
AUTOSAR C++14 Rule M3-3-2Если функция имеет внутреннее редактирование, все повторные объявления должны включать в себя статический спецификатор класса памяти
AUTOSAR C++14 Rule M3-4-1Идентификатор, объявленный как объект или тип, должен быть определен в блоке, который минимизирует его видимость
AUTOSAR C++14 Rule M3-9-1Типы, используемые для объекта, типа возврата функции или параметра функции, должны быть идентичными token for-token во всех объявлениях и повторных объявлениях
AUTOSAR C++14 Rule M3-9-3Базовые битовые представления значений с плавающей точкой не должны использоваться
AUTOSAR C++14 Rule A4-5-1Выражения с типом enum или классом enum не должны использоваться как операнды для встроенных и перегруженных операторов, кроме оператора индекса [], оператора назначения =, операторов равенства = = и! =, унарного & оператора и реляционных операторов <, < =, >, > =
AUTOSAR C++14 Rule A4-10-1В качестве ограничения null-указателя должен использоваться только литерал nullptr
AUTOSAR C++14 Rule M4-5-1Выражения с типом bool не должны использоваться как операнды для встроенных операторов, кроме оператора назначения =, логических операторов &, ||,!, операторов равенства = = и! =, унарного & оператора и условного оператора
AUTOSAR C++14 Rule M4-5-3Выражения с типом (обычным) char и wchar_t не должны использоваться как операнды для встроенных операторов, кроме оператора назначения =, операторов равенства = = и! =, и унарного & оператора
AUTOSAR C++14 Rule M4-10-1Значение NULL не должно использоваться в качестве целого числа
AUTOSAR C++14 Rule M4-10-2Буквальный нуль (0) не должен использоваться в качестве нуль-указателя-константы
AUTOSAR C++14 Rule A5-0-1Значение выражения должно быть тем же самым в любом порядке оценки, который разрешает стандарт
AUTOSAR C++14 Rule A5-0-2Условие оператора if и условие оператора итерации должны иметь тип bool
AUTOSAR C++14 Rule A5-0-3Объявление объектов должно содержать не более двух уровней опосредования указателя
AUTOSAR C++14 Rule A5-0-4Арифметика указателя не должна использоваться с указателями на нефинальные классы
AUTOSAR C++14 Rule A5-1-1Буквальные значения не должны использоваться отдельно от инициализации типа, в противном случае вместо них должны использоваться символические имена
AUTOSAR C++14 Rule A5-1-2Переменные не должны быть неявно захвачены в лямбда выражении
AUTOSAR C++14 Rule A5-1-3Список параметров (возможно, пустой) должен быть включен в каждое лямбда выражение
AUTOSAR C++14 Rule A5-1-4Объект лямбда-выражения не должен пережить ни один из захваченных ссылками объектов
AUTOSAR C++14 Rule A5-1-6Необходимо явным образом задать возвращаемый тип недействительного лямбда-выражения возвращаемого типа
AUTOSAR C++14 Rule A5-1-7Лямбда не должна быть операндом для объявления типа или типа
AUTOSAR C++14 Rule A5-1-8Лямбда-выражения не должны быть определены в другом лямбда-выражении
AUTOSAR C++14 Rule A5-1-9Идентичные безымянные выражения лямбды должны быть заменены на именованную функцию или именованное лямбда-выражение
AUTOSAR C++14 Rule A5-2-1dynamic_cast не следует использовать
AUTOSAR C++14 Rule A5-2-2Традиционные отливки в стиле С не должны использоваться
AUTOSAR C++14 Rule A5-2-3Приведение не должно удалять какую-либо несовпадающую или изменчивую проверку из типа указателя или ссылки
AUTOSAR C++14 Rule A5-2-4reinterpret_cast не должны использоваться
AUTOSAR C++14 Rule A5-2-6Операнды логического && или || должны быть скобками, если операнды содержат бинарные операторы
AUTOSAR C++14 Rule A5-3-1Оценка операнда оператору typeid не должна содержать побочных эффектов
AUTOSAR C++14 Rule A5-3-2Нулевые указатели не должны быть разберутся
AUTOSAR C++14 Rule A5-3-3Указатели на неполные типы классов не должны удаляться
AUTOSAR C++14 Rule A5-6-1Операнд правой руки целочисленного деления или остальных операторов не должен равняться нулю
AUTOSAR C++14 Rule A5-10-1Указатель на представителя виртуальную функцию должен быть проверен только на равенство с null-указателем-константой
AUTOSAR C++14 Rule A5-16-1Троичный условный оператор не должен использоваться в качестве подмножества
AUTOSAR C++14 Rule M5-0-2Ограниченная зависимость должна быть помещена в правила приоритета оператора C++ в выражениях
AUTOSAR C++14 Rule M5-0-3Выражение cvalue не должно неявно преобразовываться в другой базовый тип
AUTOSAR C++14 Rule M5-0-4Неявное интегральное преобразование не должно изменять сигнальность базового типа
AUTOSAR C++14 Rule M5-0-5Не должно быть неявных преобразований с плавающим интегралом
AUTOSAR C++14 Rule M5-0-6Неявное интегральное преобразование или преобразование с плавающей точкой не должно уменьшать размер базового типа
AUTOSAR C++14 Rule M5-0-7Не должно быть явных плавающих-интегральных преобразований выражения cvalue
AUTOSAR C++14 Rule M5-0-8Явное интегральное преобразование или преобразование с плавающей точкой не должно увеличивать размер базового типа выражения cvalue
AUTOSAR C++14 Rule M5-0-9Явное интегральное преобразование не должно изменять сигнальность базового типа выражения cvalue
AUTOSAR C++14 Rule M5-0-10Если побитовые операторы ~ и < < применяются к операнду с базовым типом беззнакового char или беззнакового short, результат должен быть немедленно приведен к базовому типу операнда
AUTOSAR C++14 Rule M5-0-11Обычный тип char должен использоваться только для хранения и использования значений символов
AUTOSAR C++14 Rule M5-0-12Подписанные char и беззнаковый тип char должны использоваться только для хранения и использования числовых значений
AUTOSAR C++14 Rule M5-0-14Первый операнд условного оператора должен иметь тип bool
AUTOSAR C++14 Rule M5-0-15Индексация массива должна быть единственной формой арифметики указателя
AUTOSAR C++14 Rule M5-0-16Операнд указателя и любой указатель, полученный из арифметики указателя, использующей этот операнд, должны оба адресовать элементы одного массива
AUTOSAR C++14 Rule M5-0-17Вычитание между указателями должно применяться только к указателям, которые адресуют элементы одного массива
AUTOSAR C++14 Rule M5-0-18>, > =, <, < = не должны применяться к объектам типа указателя, кроме тех случаев, когда они указывают на один и тот же массив
AUTOSAR C++14 Rule M5-0-20Непостоянные операнды двоичному побитовому оператору должны иметь тот же базовый тип
AUTOSAR C++14 Rule M5-0-21Битовые операторы должны применяться только к операндам неподписанного базового типа
AUTOSAR C++14 Rule M5-2-2Указатель на виртуальный базовый класс должен быть приведен только к указателю на производный класс посредством dynamic_cast
AUTOSAR C++14 Rule M5-2-3Приведения из базового класса в производный класс не должны выполняться для полиморфных типов
AUTOSAR C++14 Rule M5-2-6Приведение не должно преобразовывать указатель в функцию в любой другой тип указателя, включая указатель на тип функции
AUTOSAR C++14 Rule M5-2-8Объект с целым типом или указатель на пустой тип не должен преобразовываться в объект с типом указателя
AUTOSAR C++14 Rule M5-2-9Приведение не должно преобразовывать тип указателя в интегральный тип
AUTOSAR C++14 Rule M5-2-10Операторы шага (+ +) и декремента (--) не должны смешиваться с другими операторами в выражении
AUTOSAR C++14 Rule M5-2-11Оператор запятыми, & & оператор и оператор || не должны быть перегружены
AUTOSAR C++14 Rule M5-2-12Идентификатор с типом массива, переданный как аргумент функции, не должен распадаться на указатель
AUTOSAR C++14 Rule M5-3-1Каждый операнд! оператор, логический & & или логический || операторы должны иметь тип bool
AUTOSAR C++14 Rule M5-3-2Оператор унарного минуса не применяется к выражению, базовый тип которого не подписан
AUTOSAR C++14 Rule M5-3-3Унарный & оператор не должен быть перегружен
AUTOSAR C++14 Rule M5-3-4Оценка операнда оператору размера не должна содержать побочных эффектов
AUTOSAR C++14 Rule M5-8-1Операнд правой руки оператора сдвига должен лежать между нулем и на единицу меньше ширины в битах базового типа операнда левой руки
AUTOSAR C++14 Rule M5-14-1Операнд правой руки логического & &, || операторов не должен содержать побочных эффектов
AUTOSAR C++14 Rule M5-18-1Оператор запятыми не должен использоваться
AUTOSAR C++14 Rule M5-19-1Оценка постоянных беззнаковых целочисленных выражений не должна приводить к переносу
AUTOSAR C++14 Rule A6-2-1Операторы назначения перемещения и копирования должны либо перемещать, либо соответственно копировать базовые классы и представители данных класса без каких-либо побочных эффектов
AUTOSAR C++14 Rule A6-2-2Операторы выражения не должны быть явными вызовами только конструкторов временных объектов
AUTOSAR C++14 Rule A6-4-1Оператор switch должен иметь по крайней мере два положения, отличных от метки по умолчанию
AUTOSAR C++14 Rule A6-5-2Цикл for должен содержать один контур-счетчик, который не должен иметь тип с плавающей точкой
AUTOSAR C++14 Rule A6-5-3Операторы Do не должны использоваться
AUTOSAR C++14 Rule A6-5-4Оператор for-init и выражение не должны выполнять действия, кроме инициализации и изменения счетчика цикла
AUTOSAR C++14 Rule A6-6-1Оператор goto не должен использоваться
AUTOSAR C++14 Rule M6-2-1Операторы назначения не должны использоваться в подмножествах
AUTOSAR C++14 Rule M6-2-2Выражения с плавающей точкой не должны быть прямо или косвенно проверены на равенство или неравенство
AUTOSAR C++14 Rule M6-2-3Перед предварительной обработкой нулевой оператор должно происходить только в линии само по себе; за ним может последовать комментарий при условии, что первый символ, следующий за оператором null, является символом белого пространства
AUTOSAR C++14 Rule M6-3-1Оператор, образующий тело переключателя, в то время как, сделать... в то время как или для оператора должно быть составной оператор
AUTOSAR C++14 Rule M6-4-1За конструкцией if (условие) следует составной оператор. За другим ключевым словом следует либо составной оператор, либо другой оператор if
AUTOSAR C++14 Rule M6-4-2Все, если... другое, если конструкции должны быть завершены с помощью предложения else
AUTOSAR C++14 Rule M6-4-3Оператор switch должен быть хорошо сформированным оператором switch
AUTOSAR C++14 Rule M6-4-4Метка switch-label должна использоваться только в том случае, если наиболее тесно связанный составной оператор является телом оператора switch
AUTOSAR C++14 Rule M6-4-5Оператор безоговорочного переключения или пропуска прекращает действие каждого пункта о непустом переключателе
AUTOSAR C++14 Rule M6-4-6Конечным пунктом оператора switch является положение по умолчанию
AUTOSAR C++14 Rule M6-4-7Условие оператора switch не должно иметь типа bool
AUTOSAR C++14 Rule M6-5-2Если счетчик цикла не изменяется -- или++, то в пределах условия счетчик цикла должен использоваться только в качестве операнда на < =, <, > или > =
AUTOSAR C++14 Rule M6-5-3Счетчик цикла не должен быть изменен в пределах условия или оператора
AUTOSAR C++14 Rule M6-5-4Счетчик цикла должен быть изменен одним из: --, + +, - = n или + = n; где n остается постоянным для длительности цикла
AUTOSAR C++14 Rule M6-5-5Переменная цикла-управления, отличная от счетчика цикла, не должна изменяться в рамках условия или выражения
AUTOSAR C++14 Rule M6-5-6Переменная loop-control, отличная от счетчика loop-counter, измененная в операторе, должна иметь тип bool
AUTOSAR C++14 Rule M6-6-1Любая метка, на которую ссылается оператор goto, должна быть объявлена в том же блоке или в блоке, содержащем оператор goto
AUTOSAR C++14 Rule M6-6-2Оператор goto должен перейти к метке, объявленной позже в том же теле функции
AUTOSAR C++14 Rule M6-6-3Оператор продолжения должен использоваться только в хорошо сформированном цикле for
AUTOSAR C++14 Rule A7-1-1Спецификаторы Constexpr или const должны использоваться для неизменяемого объявления данных
AUTOSAR C++14 Rule A7-1-2Спецификатор constexpr должен использоваться для значений, которые могут быть определены во время компиляции
AUTOSAR C++14 Rule A7-1-3CV-классификаторы должны быть размещены на правой стороне типа, который является typedef или использовать имя
AUTOSAR C++14 Rule A7-1-4Ключевое слово регистра не должно использоваться
AUTOSAR C++14 Rule A7-1-5Автоматический спецификатор не должно использоваться отдельно от следующих случаев: (1) объявить, что переменная имеет тот же тип, что и возвращаемый тип вызова функции, (2) объявить, что переменная имеет тот же тип, что и инициализатор неосновного типа, (3) объявить параметры типового лямбда-выражения, (4) объявить шаблон функции с помощью конечного синтаксиса типа возврата
AUTOSAR C++14 Rule A7-1-6Спецификатор typedef не должен использоваться
AUTOSAR C++14 Rule A7-1-7Каждый оператор выражения и объявление идентификатора помещаются в отдельную линию
AUTOSAR C++14 Rule A7-1-8Спецификатор, не относящийся к типу, помещается перед спецификатором типа в объявлении
AUTOSAR C++14 Rule A7-1-9Класс, структура или перечисление не должны быть объявлены в определении его типа
AUTOSAR C++14 Rule A7-2-2Перечисление базового типа должно быть четко определено
AUTOSAR C++14 Rule A7-2-3Перечисления должны быть объявлены как отсчитываемые классы перечисления
AUTOSAR C++14 Rule A7-2-4В перечислении либо (1) нет, либо (2) первый, либо (3) все перечислители должны быть инициализированы
AUTOSAR C++14 Rule A7-3-1Все перегрузки функции должны быть видны, откуда она вызывается
AUTOSAR C++14 Rule A7-5-1Функция не должна возвращать ссылку или указатель на параметр, который передается ссылкой на const
AUTOSAR C++14 Rule A7-5-2Функции не должны вызывать себя, прямо или косвенно
AUTOSAR C++14 Rule A7-6-1Функции, объявленные с атрибутом [[noreturn]], не возвращаются
AUTOSAR C++14 Rule M7-1-2Указатель или ссылочный параметр в функции должны быть объявлены как указатель на const или ссылка на const, если соответствующий объект не изменен
AUTOSAR C++14 Rule M7-3-1Глобальное пространство имен должно содержать только основные объявления пространства имен и внешние объявления «C»
AUTOSAR C++14 Rule M7-3-2Основной идентификатор не должен использоваться для функции, отличной от основной глобальной функции
AUTOSAR C++14 Rule M7-3-3В файлах заголовков не должно быть неназванных пространств имен
AUTOSAR C++14 Rule M7-3-4Использование-директивы не должно использоваться
AUTOSAR C++14 Rule M7-3-6Using-directives и using-declarations (исключая class scope или function scope using-declarations) не должны использоваться в файлах заголовка
AUTOSAR C++14 Rule A7-4-1Декларация asm не должна использоваться
AUTOSAR C++14 Rule M7-4-2Инструкции ассемблера должны вводиться только с помощью объявления asm
AUTOSAR C++14 Rule M7-4-3Язык сборки должен быть инкапсулирован и изолирован
AUTOSAR C++14 Rule M7-5-1Функция не должна возвращать ссылку или указатель на автоматическую переменную (включая параметры), заданную в функции
AUTOSAR C++14 Rule M7-5-2Адрес объекта с автоматическим хранением не должен быть присвоен другому объекту, который может сохраняться после прекращения существования первого объекта
AUTOSAR C++14 Rule A8-2-1При объявлении шаблонов функций используется конечный синтаксис типа возврата, если тип возврата зависит от типа параметров
AUTOSAR C++14 Rule A8-4-1Функции не должны определяться с помощью эллипсиса обозначения
AUTOSAR C++14 Rule A8-4-2Все выходные пути из функции с непустым типом возврата должны иметь явный оператор возврата с выражением
AUTOSAR C++14 Rule A8-4-4Несколько выходных значений от функции должны быть возвращены как struct или кортеж
AUTOSAR C++14 Rule A8-4-5параметры «потреблять», объявленные как X & &, всегда должны быть перемещены из
AUTOSAR C++14 Rule A8-4-6«форвардные» параметры, объявленные как T & & должны всегда пересылаться
AUTOSAR C++14 Rule A8-4-7Параметры «in» для типов «cheap to copy» должны передаваться по значению
AUTOSAR C++14 Rule A8-4-8Выходные параметры не должны использоваться
AUTOSAR C++14 Rule A8-4-9параметры «in-out», объявленные как T & должны быть изменены
AUTOSAR C++14 Rule A8-4-10Параметр передается по ссылке, если он не может быть NULL
AUTOSAR C++14 Rule A8-4-14Интерфейсы должны быть точно и строго типизированы
AUTOSAR C++14 Rule A8-5-0Вся память должна быть инициализирована до ее чтения
AUTOSAR C++14 Rule A8-5-1В списке инициализации порядок инициализации должен быть следующим: (1) виртуальные базовые классы в глубине и слева направо от графика наследования, (2) прямые базовые классы в порядке слева направо от списка наследования, (3) нестатические представители данных в том порядке, в котором они были объявлены в определении класса
AUTOSAR C++14 Rule A8-5-2Для переменной инициализации следует использовать скобку-инициализацию {} без знака equals
AUTOSAR C++14 Rule A8-5-4Если у класса есть объявленный пользователем конструктор, который принимает параметр типа std::initializer_list, то он должен быть единственным конструктором, кроме конструкторов функций специальных представителей
AUTOSAR C++14 Rule A8-5-3Переменная типа auto не должна быть инициализирована с помощью {} или = {} braced-initialization
AUTOSAR C++14 Rule M8-0-1init-declarator-list или member-declator-list должны состоять из одного init-declarator или member-declarator соответственно
AUTOSAR C++14 Rule M8-3-1Параметры в переопределяющей виртуальной функции должны либо использовать те же аргументы по умолчанию, что и функция, которую они переопределяют, либо не должны задавать какие-либо аргументы по умолчанию
AUTOSAR C++14 Rule M8-4-2Идентификаторы, используемые для параметров в повторном объявлении функции, должны быть идентичны идентификаторам в объявлении
AUTOSAR C++14 Rule M8-4-4Идентификатор функции должен либо использоваться для вызова функции, либо ему должны предшествовать &
AUTOSAR C++14 Rule M8-5-2Скобки должны использоваться для указания и соответствия структуры в ненулевой инициализации массивов и структур
AUTOSAR C++14 Rule A9-3-1Представители функции не должны возвращать неконстатные «необработанные» указатели или ссылки на частные или защищенные данные, принадлежащие классу
AUTOSAR C++14 Rule A9-5-1Объединения не должны использоваться
AUTOSAR C++14 Rule A9-6-1Типы данных, используемые для взаимодействия с оборудованием или соответствия протоколам связи, должны быть тривиальными, стандартными и содержать только представителей типов с заданными размерами
AUTOSAR C++14 Rule M9-3-1Функции Const представителя не должны возвращать неконстатные указатели или ссылки на данные классов
AUTOSAR C++14 Rule M9-3-3Если функция представителя может быть сделана статической, то она должна быть сделана статической, в противном случае, если она может быть сделана const, то она должна быть сделана const
AUTOSAR C++14 Rule M9-6-4Именованные битовые поля со знаком целого типа должны иметь длину более одного бита
AUTOSAR C++14 Rule A10-1-1Класс не должен быть получен из более чем одного базового класса, который не является классом интерфейса
AUTOSAR C++14 Rule A10-2-1Невирусные функции общего или защищенного представителя не должны переопределяться в производных классах
AUTOSAR C++14 Rule A10-3-1Объявление виртуальной функции должно содержать только один из трех спецификаторов: (1) виртуальный, (2) переопределение, (3) окончательный
AUTOSAR C++14 Rule A10-3-2Каждая переопределяющая виртуальная функция должна быть объявлена с переопределением или конечным спецификатором
AUTOSAR C++14 Rule A10-3-3Виртуальные функции не должны вводиться в окончательный класс
AUTOSAR C++14 Rule A10-3-5Определяемый пользователем оператор назначения не должен быть виртуальным
AUTOSAR C++14 Rule M10-1-1Классы не должны быть выведены из виртуальных основ
AUTOSAR C++14 Rule M10-1-2Базовый класс должен быть объявлен виртуальным, только если он используется в иерархии алмазов
AUTOSAR C++14 Rule M10-1-3Доступный базовый класс не должен быть как виртуальным, так и невирусным в одной иерархии
AUTOSAR C++14 Rule M10-2-1Все доступные имена сущностей в множественной иерархии наследования должны быть уникальными
AUTOSAR C++14 Rule M10-3-3Виртуальная функция должна быть переопределена только чистой виртуальной функцией, если она сама объявлена как чистая виртуальная
AUTOSAR C++14 Rule A11-0-1Тип, отличный от POD, должен быть определен как класс
AUTOSAR C++14 Rule A11-0-2Тип, определяемый как struct, должен: (1) обеспечивать только представителей общедоступных данных, (2) не предоставлять никаких специальных функций или методов представителей, (3) не быть основой другого struct или класса, (4) не наследовать от другого struct или класса
AUTOSAR C++14 Rule A11-3-1Декларации друзей не должны использоваться
AUTOSAR C++14 Rule M11-0-1Данные представителей в типах классов, отличных от POD, должны быть частными
AUTOSAR C++14 Rule A12-0-1Если класс объявляет операцию копирования или перемещения или деструктор либо через «= default», «= delete» или через предоставленное пользователем объявление, то все остальные из этих пяти специальных функций-членов также должны быть объявлены
AUTOSAR C++14 Rule A12-0-2Побитовые операции и операции, предполагающие представление данных в памяти, не должны выполняться на объектах
AUTOSAR C++14 Rule A12-1-1Конструкторы должны явно инициализировать все виртуальные базовые классы, все прямые невирусные базовые классы и все нестатические представители данных
AUTOSAR C++14 Rule A12-1-2И NSDMI, и нестатический инициализатор представителей в конструкторе не должны использоваться в одном типе
AUTOSAR C++14 Rule A12-1-4Все конструкторы, которые могут вызываться с одним аргументом основного типа, должны быть объявлены явными
AUTOSAR C++14 Rule A12-1-6Производные классы, которые не нуждаются в дальнейшей явной инициализации и требуют, чтобы все конструкторы из базового класса использовали наследующие конструкторы
AUTOSAR C++14 Rule A12-4-1Деструктор базового класса должен быть общедоступным виртуальным, общедоступным или защищенным невирусным
AUTOSAR C++14 Rule A12-4-2Если публичный деструктор класса не является виртуальным, то класс должен быть объявлен окончательным
AUTOSAR C++14 Rule A12-6-1Все представители данных классов, инициализируемые конструктором, должны быть инициализированы с помощью инициализаторов представителей
AUTOSAR C++14 Rule A12-8-1Конструкторы перемещения и копирования должны перемещать и соответственно копировать базовые классы и представители данных класса без каких-либо побочных эффектов
AUTOSAR C++14 Rule A12-8-2Определяемые пользователем операторы копирования и переноса должны использовать определяемую пользователем функцию no-throw swap
AUTOSAR C++14 Rule A12-8-3Перемещенный из объекта не должен быть получен доступ для чтения
AUTOSAR C++14 Rule A12-8-4Конструктор Move не должен инициализировать свои члены класса и базовые классы, используя семантику копирования
AUTOSAR C++14 Rule A12-8-5Операторы присвоения копий и назначения на перемещение должны выполнять самоопределение
AUTOSAR C++14 Rule A12-8-6Копирование и перемещение конструкторов, а также копирование и перемещение операторов назначения должны быть объявлены защищенными или определены «= delete» в базовом классе
AUTOSAR C++14 Rule A12-8-7Операторы назначения должны быть объявлены с помощью ref-qualifier &
AUTOSAR C++14 Rule M12-1-1Динамический тип объекта не должен использоваться из тела его конструктора или деструктора
AUTOSAR C++14 Rule A13-1-2Определяемые пользователем суффиксы пользовательских операторов литералов должны начинаться с подчеркивания, за которым следует одна или несколько букв
AUTOSAR C++14 Rule A13-2-1Оператор назначения возвращает ссылку на «this»
AUTOSAR C++14 Rule A13-2-3Реляционный оператор должен вернуть логическое значение
AUTOSAR C++14 Rule A13-5-1Если «оператор []» должен быть перегружен неконстовой версией, также должна быть реализована версия const
AUTOSAR C++14 Rule A13-5-2Все пользовательские операторы преобразования должны быть четко определены
AUTOSAR C++14 Rule A13-5-3Пользовательские операторы преобразования не должны использоваться
AUTOSAR C++14 Rule A13-5-5Операторы сравнения должны быть не входящими в состав функциями с идентичными типами параметров и noexcept
AUTOSAR C++14 Rule A13-6-1Разделители последовательностей цифр 'должны использоваться только следующим образом: (1) для десятичных чисел, каждые 3 цифры, (2) для шестнадцатеричных знаков, каждые 2 цифры, (3) для двоичных знаков, каждые 4 цифры
AUTOSAR C++14 Rule A14-5-2Члены класса, которые не зависят от параметров класса шаблона, должны быть определены в отдельном базовом классе
AUTOSAR C++14 Rule A14-5-3Типовой оператор, не являющийся членом, должен быть объявлен только в пространстве имен, которое не содержит тип класса (struct), тип перечисления или объявления типа объединения
AUTOSAR C++14 Rule A14-7-2Специализация шаблона должна быть объявлена в том же файле (1), что и основной шаблон (2), как определяемый пользователем тип, для которого заявлена специализация
AUTOSAR C++14 Rule A14-8-2Явные специализации шаблонов функций не должны использоваться
AUTOSAR C++14 Rule M14-5-3Оператор назначения копии объявляется, когда существует оператор назначения шаблона с параметром, который является типовым параметром
AUTOSAR C++14 Rule M14-6-1В шаблоне класса с зависимой основой любое имя, которое может быть найдено в этой зависимой основе, должно упоминаться с использованием квалифицированного идентификатора или this- >
AUTOSAR C++14 Rule A15-1-1Следует выдавать только образцы типов, полученных из исключения std::
AUTOSAR C++14 Rule A15-1-2Объект исключения не должен быть указателем
AUTOSAR C++14 Rule A15-1-3Все выданные исключения должны быть уникальными
AUTOSAR C++14 Rule A15-2-1Конструкторы, которые не являются noexcept, не должны вызываться до запуска программы
AUTOSAR C++14 Rule A15-3-3Основная функция и основная функция задачи должны захватывать как минимум: исключения базового класса из всех используемых сторонних библиотек, std:: исключение и все необработанные исключения
AUTOSAR C++14 Rule A15-3-4Обработчики catch-all (ellipsis и std:: exception) должны использоваться только в (a) основных, (b) основных функциях задачи, (c) в функциях, которые должны изолировать независимые компоненты и (d) при вызове стороннего кода, который использует исключения не согласно рекомендациям AUTOSAR C++ 14
AUTOSAR C++14 Rule A15-3-5Исключение типа класса должно быть получено путем ссылки или const
AUTOSAR C++14 Rule A15-4-1Динамические технические условия на исключения не должны использоваться
AUTOSAR C++14 Rule A15-4-2Если функция объявлена как noexcept, noexcept (true) или noexcept (< true condition >), то она не должна выходить за исключением
AUTOSAR C++14 Rule A15-4-3Спецификация noexcept функции должна быть либо идентичной во всех модулях перевода, либо идентичной или более ограничительной между функцией виртуального представитель и переопределителем
AUTOSAR C++14 Rule A15-4-4Объявление функции отсутствия метания должно содержать спецификацию noexcept
AUTOSAR C++14 Rule A15-5-1Все предоставляемые пользователем деструкторы классов, функции деаллокации, конструкторы переноса, операторы назначения перемещений и функции подкачки не должны выходить за исключением. Спецификация исключения noexcept должна быть добавлена к этим функциям по мере необходимости
AUTOSAR C++14 Rule A15-5-3Функция std:: terminate () не должна вызываться неявно
AUTOSAR C++14 Rule M15-0-3Управление не должно передаваться в блок try или catch с помощью goto или оператора switch
AUTOSAR C++14 Rule M15-1-1Назначение-выражение оператора throw само по себе не должно вызывать выдачу исключения
AUTOSAR C++14 Rule M15-1-2Значение NULL не должно передаваться явным образом
AUTOSAR C++14 Rule M15-1-3Пустой бросок (throw;) должен использоваться только в составном операторе обработчика catch
AUTOSAR C++14 Rule M15-3-1Исключения должны быть высказаны только после запуска и до окончания
AUTOSAR C++14 Rule M15-3-3Обработчики реализации function-try-block конструктора класса или деструктора не должны ссылаться на нестатические представители из этого класса или его основ
AUTOSAR C++14 Rule M15-3-4Каждое исключение, явно выданное в коде, должно иметь обработчик совместимого типа во всех путях вызова, который может привести к этой точке
AUTOSAR C++14 Rule M15-3-6Если несколько обработчиков предусмотрены в одном операторе try-catch или function-try-блоке для производного класса и некоторых или всех его основ, обработчики должны быть упорядочены наиболее производным к базовому классу
AUTOSAR C++14 Rule M15-3-7В случае, когда в одном операторе try-catch или в блоке function-try-block предусмотрено несколько обработчиков, любой обработчик многоточия (catch-all) должен происходить последним
AUTOSAR C++14 Rule A16-0-1Препроцессор должен использоваться только для безусловного и условного включения файлов и включать в себя охрану, и использовать конкретные директивы
AUTOSAR C++14 Rule A16-2-1Символы ', ",/* ,//,\не должны присутствовать в имени файла заголовка или в директиве # include
AUTOSAR C++14 Rule A16-6-1Директива # ошибка не должна использоваться
AUTOSAR C++14 Rule A16-7-1Директива # pragma не должна использоваться
AUTOSAR C++14 Rule M16-0-1# включить директивы в файл должны предшествовать только другие предпроцессорные директивы или комментарии
AUTOSAR C++14 Rule M16-0-2Макросы должны быть только # defined d или # undef d в глобальном пространстве имен
AUTOSAR C++14 Rule M16-0-5Аргументы в функциональный макрос не должны содержать лексемы, которые выглядят как директивы предварительной обработки
AUTOSAR C++14 Rule M16-0-6В определении функционального макроса каждый образец параметра должен быть заключен в круглые скобки, если он не используется в качестве операнда # или # #
AUTOSAR C++14 Rule M16-0-7Неопределенные идентификаторы макросов не должны использоваться в предпроцессорных директивах # if или # elif, за исключением операндов определенному оператору
AUTOSAR C++14 Rule M16-0-8Если лексема # появляется в качестве первой лексемы в линии, то за ним немедленно следует предварительно обработанный лексема
AUTOSAR C++14 Rule M16-1-1Определенный предпроцессорный оператор должен использоваться только в одной из двух стандартных форм
AUTOSAR C++14 Rule M16-1-2Все # else, # elif и # endif предпроцессорные директивы должны находиться в том же файле, что и директива # if или # ifdef, с которой они связаны
AUTOSAR C++14 Rule M16-2-3Предусмотреть охрану
AUTOSAR C++14 Rule M16-3-1Должно быть не более одного вхождения операторов # или # # в одном определении макроса
AUTOSAR C++14 Rule M16-3-2Операторы # и # не должны использоваться
AUTOSAR C++14 Rule A17-0-1Зарезервированные идентификаторы, макросы и функции в стандартной библиотеке C++ не должны быть определены, переопределены или неопределены
AUTOSAR C++14 Rule A17-6-1Нестандартные сущности не должны добавляться в стандартные пространства имен
AUTOSAR C++14 Rule M17-0-2Имена стандартных библиотечных макросов и объектов не должны повторно использоваться
AUTOSAR C++14 Rule M17-0-3Имена стандартных библиотечных функций не должны быть переопределены
AUTOSAR C++14 Rule M17-0-5Макрос setjmp и функция longjmp не должны использоваться
AUTOSAR C++14 Rule A18-0-1Доступ к средствам библиотеки C осуществляется только через заголовки библиотеки C++
AUTOSAR C++14 Rule A18-0-2Состояние ошибки преобразования из строки в числовое значение должно быть проверено
AUTOSAR C++14 Rule A18-0-3Библиотека < clocale > (locale.h) и функция setlocale не должны использоваться
AUTOSAR C++14 Rule A18-1-1Массивы в стиле C не должны использоваться
AUTOSAR C++14 Rule A18-1-2Специализация std:: vector < bool > не должна использоваться
AUTOSAR C++14 Rule A18-1-3Использование std::auto_ptr не допускается
AUTOSAR C++14 Rule A18-1-6Все специализации std:: hash для определяемых пользователем типов должны иметь оператора вызова функции noexcept
AUTOSAR C++14 Rule A18-5-1Функции malloc, calloc, realloc и free не должны использоваться
AUTOSAR C++14 Rule A18-5-2Выражения без размещения или удаления не должны использоваться
AUTOSAR C++14 Rule A18-5-3Форма оператора удаления должна совпадать с формой нового оператора, используемого для выделения памяти
AUTOSAR C++14 Rule A18-5-4Если проект имеет размерную или негабаритную версию оператора 'delete', глобально определенную, то должны быть определены как размерную, так и негабаритную версии
AUTOSAR C++14 Rule A18-5-9Пользовательские реализации функций динамического выделения и удаления памяти должны отвечать семантическим требованиям, указанным в соответствующем пункте «Необходимое поведение» стандарта C++
AUTOSAR C++14 Rule A18-5-10Размещение нового должно использоваться только с правильно совмещенными указателями на достаточную емкость хранилища
AUTOSAR C++14 Rule A18-5-11«оператор new» и «оператор delete» должны определяться вместе
AUTOSAR C++14 Rule A18-9-1std:: bind не должен использоваться
AUTOSAR C++14 Rule A18-9-2Переадресация значений на другие функции осуществляется через: (1) std:: move, если значение является ссылкой rvalue, (2) std:: forward, если значение является ссылкой на переадресацию
AUTOSAR C++14 Rule A18-9-3Перемещение std:: не должно использоваться на объектах, объявленных const или const &
AUTOSAR C++14 Rule A18-9-4Аргумент std:: forward не используется впоследствии
AUTOSAR C++14 Rule M18-0-3Функции библиотеки abort, exit, getenv и система из библиотеки < cstdlib > не должны использоваться
AUTOSAR C++14 Rule M18-0-4Функции обработки времени библиотеки < ctime > не должны использоваться
AUTOSAR C++14 Rule M18-0-5Неограниченные функции библиотеки < cstring > не должны использоваться
AUTOSAR C++14 Rule M18-2-1Смещение макроса не должно использоваться
AUTOSAR C++14 Rule M18-7-1Средства обработки сигналов < csignal > не должны использоваться
AUTOSAR C++14 Rule M19-3-1Индикатор ошибки errno не должен использоваться
AUTOSAR C++14 Rule A20-8-1Уже принадлежащее значение указателя не должно храниться в несвязанном интеллектуальном указателе
AUTOSAR C++14 Rule A20-8-2Для представления исключительной собственности используется std::unique_ptr
AUTOSAR C++14 Rule A20-8-3Для представления долевого владения используется std::shared_ptr
AUTOSAR C++14 Rule A20-8-5std::make_unique должны использоваться для построения объектов, принадлежащих std::unique_ptr
AUTOSAR C++14 Rule A20-8-6std::make_shared должны использоваться для построения объектов, принадлежащих std::shared_ptr
AUTOSAR C++14 Rule A21-8-1Аргументы в функции обработки символов должны быть представлены как беззнаковый char
AUTOSAR C++14 Rule A23-0-1Итератор не должен быть неявно преобразован в const_iterator
AUTOSAR C++14 Rule A26-5-1Псевдослучайные номера не должны генерироваться при помощи std:: rand ()
AUTOSAR C++14 Rule A26-5-2Двигатели с случайными числами не должны быть инициализированы по умолчанию
AUTOSAR C++14 Rule A27-0-2Строка в стиле C должна гарантировать достаточное пространство для данных и нулевого терминатор строки
AUTOSAR C++14 Rule A27-0-3Альтернативные операции входа и выхода в потоке файлов не должны использоваться без промежуточного вызова промывки или позиционирования
AUTOSAR C++14 Rule A27-0-4Строки в стиле C не должны использоваться
AUTOSAR C++14 Rule M27-0-1Библиотека ввода/вывода потока < cstdio > не должна использоваться