exponenta event banner

Правила 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++.
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Ключевое слово Volatile не должно использоваться
AUTOSAR C++14 Rule A2-13-1Должны использоваться только те escape-последовательности, которые определены в 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Последовательность символов/* не должна использоваться в комментарии в стиле Си
AUTOSAR C++14 Rule M2-10-1Различные идентификаторы должны быть типографско однозначными
AUTOSAR C++14 Rule M2-13-2Восьмеричные константы (отличные от нуля) и восьмеричные escape-последовательности (отличные от «\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 class не должны использоваться в качестве операндов для встроенных и перегруженных операторов, отличных от оператора подстрочного индекса [], оператора назначения =, операторов равенства = и! =, унарного & оператора и реляционных операторов <, < =, >, > =
AUTOSAR C++14 Rule A4-10-1В качестве ограничения указателя NULL должен использоваться только литерал nullptr
AUTOSAR C++14 Rule M4-5-1Выражения с типом bool не должны использоваться в качестве операндов для встроенных операторов, кроме оператора назначения =, логических операторов & &, |,!, операторов равенства = и! =, унарного & оператора и условного оператора
AUTOSAR C++14 Rule M4-5-3Выражения с типом (равнина) случайная работа и 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Следует явно указать возвращаемый тип лямбда-выражения, не являющегося void
AUTOSAR C++14 Rule A5-1-7Лямбда не должна быть операндом для decltype или typeid
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Оценка операнда оператору типа не должна содержать побочных эффектов
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Указатель на виртуальную функцию-член должен проверяться только на равенство с константой нулевого указателя
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Не должно быть явных плавающих-интегральных преобразований выражения значения
AUTOSAR C++14 Rule M5-0-8Явное преобразование интеграла или с плавающей запятой не должно увеличивать размер базового типа выражения значения
AUTOSAR C++14 Rule M5-0-9Явное интегральное преобразование не должно изменять сигнатуру базового типа выражения значения
AUTOSAR C++14 Rule M5-0-10Если побитовые операторы ~ и < < применяются к операнду с нижележащим типом неподписанного символа или неподписанным коротким, результат немедленно приводится к нижележащему типу операнда.
AUTOSAR C++14 Rule M5-0-11Тип простого символа должен использоваться только для хранения и использования символьных значений
AUTOSAR C++14 Rule M5-0-12Подписанный символ и неподписанный тип символа должны использоваться только для хранения и использования числовых значений
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Объект с целым типом или указатель на тип void не должен преобразовываться в объект с типом указателя
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Операторы expression не должны быть явными вызовами только конструкторов временных объектов
AUTOSAR C++14 Rule A6-4-1Оператор switch должен иметь не менее двух вариантов, отличных от метки по умолчанию
AUTOSAR C++14 Rule A6-5-2Цикл для должен содержать один счетчик цикла, который не должен иметь тип с плавающей запятой
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 должен выполняться только в строке самостоятельно; за ним может следовать комментарий при условии, что первый символ, следующий за оператором null, является символом пробела
AUTOSAR C++14 Rule M6-3-1Утверждение, образующее тело переключателя, в то время как, делать... в то время как или для оператора должно быть составным оператором
AUTOSAR C++14 Rule M6-4-1За конструкцией if (условие) следует составная инструкция. За ключевым словом else следует либо составной оператор, либо другой оператор if
AUTOSAR C++14 Rule M6-4-2Все, если... в противном случае, если конструкции должны быть прекращены с помощью пункта else
AUTOSAR C++14 Rule M6-4-3Оператор переключения должен быть хорошо сформированным оператором переключения
AUTOSAR C++14 Rule M6-4-4Метка switch должна использоваться только в том случае, если самым близким составным оператором является тело оператора switch.
AUTOSAR C++14 Rule M6-4-5Безусловная инструкция throw or break должна завершать каждый непустой пункт switch-clause
AUTOSAR C++14 Rule M6-4-6Последним пунктом заявления о переключении является пункт по умолчанию.
AUTOSAR C++14 Rule M6-4-7Состояние оператора переключения не должно иметь тип 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Оператор continue должен использоваться только в хорошо сформированном цикле для
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 или using name
AUTOSAR C++14 Rule A7-1-4Ключевое слово register не должно использоваться
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Указатель или ссылочный параметр в функции объявляется как указатель на конст или ссылка на конст, если соответствующий объект не изменен
AUTOSAR C++14 Rule M7-3-1Глобальное пространство имен должно содержать только основные, объявления пространства имен и внешние объявления «C»
AUTOSAR C++14 Rule M7-3-2Идентификатор main не должен использоваться для функции, отличной от глобальной функции main
AUTOSAR C++14 Rule M7-3-3В файлах заголовков не должно быть безымянных пространств имен
AUTOSAR C++14 Rule M7-3-4Использование директив не допускается
AUTOSAR C++14 Rule M7-3-6Using-directives и using-declarations (исключая объявления об использовании области действия класса или функции) не должны использоваться в файлах заголовков
AUTOSAR C++14 Rule A7-4-1Декларация асм не должна использоваться
AUTOSAR C++14 Rule M7-4-2Инструкции по сборке должны вводиться только с использованием асм-декларации
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Все пути выхода из функции с типом возврата non-void должны иметь явную инструкцию return с выражением
AUTOSAR C++14 Rule A8-4-4Несколько выходных значений функции должны быть возвращены как структура или кортеж
AUTOSAR C++14 Rule A8-4-5Параметры «потребления», объявленные как X & &, всегда должны быть перемещены из
AUTOSAR C++14 Rule A8-4-6параметры «forward», объявленные как T & & &, всегда должны пересылаться
AUTOSAR C++14 Rule A8-4-7параметры «in» для типов «дешево копировать» передаются по значению
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{} без знака равенства используется для инициализации переменной
AUTOSAR C++14 Rule A8-5-4Если класс имеет объявленный пользователем конструктор, который принимает параметр типа std::initializer_list, то он должен быть единственным конструктором, кроме конструкторов специальных функций-членов
AUTOSAR C++14 Rule A8-5-3Переменная типа auto не должна инициализироваться с помощью {} или = {} baced-initialization
AUTOSAR C++14 Rule M8-0-1init-declarator-list или member-declarator-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 не должны возвращать указатели non-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) не быть базой другой структуры или класса, (4) не наследовать от другой структуры или класса
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Определяемые пользователем операторы назначения копирования и перемещения должны использовать определяемую пользователем функцию без замены
AUTOSAR C++14 Rule A12-8-3Объект Moved-from не должен быть доступен для чтения
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Операторы назначения должны быть объявлены с помощью ссылочного квалификатора &
AUTOSAR C++14 Rule M12-1-1Динамический тип объекта не должен использоваться из тела его конструктора или деструктора
AUTOSAR C++14 Rule A13-1-2Определяемые пользователем суффиксы определяемых пользователем буквенных операторов должны начинаться с подчеркивания, за которым следует одна или несколько букв
AUTOSAR C++14 Rule A13-2-1Оператор назначения возвращает ссылку на «это»
AUTOSAR C++14 Rule A13-2-3Реляционный оператор возвращает логическое значение
AUTOSAR C++14 Rule A13-5-1Если «оператор []» должен быть перегружен версией, отличной от const, также должна быть реализована версия 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 (многоточие и std:: исключение) должны использоваться только в (a) основных, (b) основных функциях задачи, (c) в функциях, которые должны изолировать независимые компоненты и (d) при вызове стороннего кода, использующего исключения, не соответствующие рекомендациям AUTOSAR C++ 14
AUTOSAR C++14 Rule A15-3-5Исключение типа класса должно восприниматься по ссылке или условной ссылке
AUTOSAR C++14 Rule A15-4-1Динамическое исключение - спецификация не должна использоваться
AUTOSAR C++14 Rule A15-4-2Если функция объявлена как noexcept, noexcept (истина) или noexcept (< истинное условие >), то она не должна выходить за исключением
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Пустой бросок (бросок;) должен использоваться только в составном заявлении обработчика улова
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-block предусмотрено несколько обработчиков для производного класса и некоторых или всех его баз, обработчики должны быть упорядочены наиболее производными для базового класса.
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Директива # error не должна использоваться
AUTOSAR C++14 Rule A16-7-1Директива # pragma не должна использоваться
AUTOSAR C++14 Rule M16-0-1# include directions в файле должны предшествовать только другие предпроцессорные директивы или комментарии
AUTOSAR C++14 Rule M16-0-2Макросы должны быть только # define '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Все директивы # ely, # elif и # endif pre-processor должны находиться в том же файле, что и директива # 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Если проект имеет размерную или неразмерную версию оператора «удалить», определенную глобально, то должны быть определены как размерная, так и неразмерная версии
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-1Не следует использовать std:: bind
AUTOSAR C++14 Rule A18-9-2Пересылка значений другим функциям должна осуществляться через: (1) std:: move, если значение является ссылкой на значение rvalue, (2) std:: forward, если значение является ссылкой на пересылку
AUTOSAR C++14 Rule A18-9-3std:: Перемещение не должно использоваться на объектах, объявленных const или const &
AUTOSAR C++14 Rule A18-9-4Аргумент std:: forward не должен использоваться впоследствии
AUTOSAR C++14 Rule M18-0-3Функции библиотеки прерывание, выход, 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Аргументы для функций обработки символов должны быть представлены как неподписанный символ
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 > не должна использоваться