Результаты Polyspace в Polyspace Bug Finder - по категориям

Рассмотрите результаты анализа

Полный список результатов Polyspace Bug Finder

Дефекты

Числовые дефекты
Absorption of float operandОдин операнд сложения или вычитания поглощен другим операндом
Bitwise operation on negative valueНеопределенное поведение для битовых операций на отрицательных величинах
Float conversion overflowПереполнение при преобразовании между типами данных с плавающей запятой
Float division by zeroДеление числа с плавающей точкой нулем
Float overflowПереполнение от операции между плавающими точками
Integer constant overflowПостоянное значение выходит за пределы области значений целочисленного типа данных
Integer conversion overflowПереполнение при преобразовании между целочисленными типами
Integer division by zeroДеление целого числа нулем
Integer overflowПереполнение от операции между целыми числами
Integer precision exceeded Операция с помощью целочисленного размера вместо точности может вызвать неопределенное поведение
Invalid use of standard library floating point routineНеправильные аргументы к стандартной библиотечной функции
Invalid use of standard library integer routineНеправильные аргументы к стандартной библиотечной функции
Possible invalid operation on boolean operandОперация может превысить точность булева операнда или привести к произвольному значению
Precision loss from integer to float conversionМладшие значащие биты целого числа, потерянного во время преобразования в тип с плавающей точкой
Shift of a negative valueОператор сдвига на отрицательной величине
Shift operation overflowПереполнение от перемещения операции
Sign change integer conversion overflowПереполнение при преобразовании между целыми числами со знаком и беззнаковым целым
Unsigned integer constant overflowПостоянное значение выходит за пределы области значений типа данных беззнаковых целых чисел
Unsigned integer conversion overflowПереполнение при преобразовании между типами беззнаковых целых чисел
Unsigned integer overflowПереполнение от операции между беззнаковым целым
Use of plain char type for numerical valueПлоскость char переменная в арифметической операции без явного, со знаком
Дефекты статического ЗУ
Arithmetic operation with NULL pointerАрифметическая операция выполняется на NULL указатель
Array access out of boundsИндекс массива вне ограничивает во время доступа к массиву
Buffer overflow from incorrect string format specifierСпецификатор формата строки заставляет буферный аргумент стандартных библиотечных функций переполняться
Destination buffer overflow in string manipulationФункция пишет, чтобы буферизовать при смещении, больше, чем buffer size
Destination buffer underflow in string manipulationФункция пишет, чтобы буферизовать при отрицательном смещении с начала буфера
Invalid use of standard library memory routineСтандартная функция библиотеки memory вызвана с недействительными аргументами
Invalid use of standard library string routineСтандартная строковая функция библиотеки вызвана недействительными аргументами
Move operation on const objectstd::move функция вызвана с объектом, объявил const или const&
Null pointerNULL указатель разыменовывается
Pointer access out of boundsУказатель разыменовывается вне его границ
Pointer or reference to stack variable leaving scopeУказатель на локальную переменную оставляет переменную scope
Subtraction or comparison between pointers to different arraysВычитание или сравнение между указателями вызывают неопределенное поведение
Unreliable cast of function pointerБросок указателя функции к другому указателю функции с различным аргументом или возвращает тип
Unreliable cast of pointerУказатель неявно бросок к другому типу данных
Use of automatic variable as putenv-family function argumentаргумент функции putenv-семейства, не доступный вне его осциллографа
Use of path manipulation function without maximum sized buffer checkingЦелевой буфер getwd или realpath меньше, чем PATH_MAX байты
Wrong allocated object size for castВыделенная память не совпадает с целевым указателем
Дефекты динамической памяти
Alignment changed after memory reallocationПерераспределение памяти изменяет первоначально более строгое выравнивание объекта
Deallocation of previously deallocated pointerПамять, освобожденная несколько раз без выделения
Invalid free of pointerОсвобождение указателя без соответствующего динамического выделения
Invalid deletion of pointerОсвобождение указателя с помощью delete без соответствующего выделения с помощью new
Memory leakПамять, выделенная динамически не освобожденный
Mismatched alloc/dealloc functions on WindowsНеподходящая функция освобождения вызывает проблемы повреждения памяти
Unprotected dynamic memory allocationУказатель, возвращенный в динамическое выделение, не проверяемое на NULL или nullptr значение
Use of previously freed pointerПамять получила доступ после освобождения
Программирование дефектов
Abnormal termination of exit handlerВыйдите функция-обработчик прерывает нормальное осуществление программы
Accessing object with temporary lifetimeОперации чтения или операции записи на объекте являются неопределенным поведением
Alternating input and output from a stream without flush or positioning callНеопределенное поведение для операций с потоками ввода или вывода
AssertionНе пройдено оператор контроля
Bad file access mode or statusАргумент режима доступа функции в fopen или open группа недопустима
C-string from string::c_str() compared to pointerСтруна до получена из std::string::c_str() сравнивается с указателем (или NULL)
Call through non-prototyped function pointerУказатель функции, объявленный без его типа или количества параметров, вызывает неожиданное поведение
Call to memset with unintended valuememset или wmemset используемый с возможно неправильными аргументами
Character value absorbed into EOFПреобразование типа данных делает значение допустимого символа тем же самым как Конец файла (EOF)
Copy of overlapping memoryИсточник и целевые аргументы функции копии имеют перекрывающуюся память
Declaration mismatchНе сочетайтесь между объявлениями функции или объявлениями переменной
Environment pointer invalidated by previous operationВызовите к setenv или putenv функция семейства изменяет среду, на которую указывает указатель
Errno not reseterrno не сброс прежде, чем вызвать функцию, которая устанавливает errno
Floating point comparison with equality operatorsНеточное сравнение переменных с плавающей точкой
Format string specifiers and arguments mismatchСпецификаторы формата в printf- как функции не совпадают с соответствующими аргументами
Function called from signal handler not asynchronous-safeВызовите к неопределенному поведению программы причин прерванной функции
Function called from signal handler not asynchronous-safe (strict)Вызовите к неопределенному поведению программы причин прерванной функции
Improper array initializationНеправильная инициализация массивов при использовании инициализаторов
Incorrect data type passed to va_argТип данных variadic аргумента функции не совпадает с типом в va_arg вызвать
Incorrect pointer scalingНеявное масштабирование в адресной арифметике с указателями может быть проигнорировано
Incorrect type data passed to va_startТип данных второго аргумента к va_start макрос приводит к неопределенному поведению
Incorrect use of offsetof in C++Неправильные аргументы к offsetof макрос вызывает неопределенное поведение
Incorrect use of va_startva_start назван в функции non-variadic или вызван вторым аргументом, который не является самым правым параметром функции variadic
Incorrect value forwardingПереданная объектная сила быть неожиданно измененным
Inline constraint not respectedМодифицируемая статическая переменная изменяется в нестатической подставляемой функции
Invalid assumptions about memory organizationАдрес вычисляется путем добавления или вычитания из адреса переменной
Invalid file positionfsetpos() вызывается с аргументом положения файла, не полученным из fgetpos()
Invalid use of = (assignment) operatorПрисвоение в условном операторе
Invalid use of == (equality) operatorОперация Equality в операторе присваивания
Invalid use of standard library routineНеправильные аргументы к стандартной библиотечной функции
Invalid va_list argumentСписок аргументов переменной, используемый после аннулирования с va_end или не инициализированный va_start или va_copy
Memory comparison of padding datamemcmp сравнивает данные, хранимые в дополнении структуры
Memory comparison of float-point valuesОбъектное представление значений с плавающей точкой может отличаться (то же самое) для равного (не равный) значения с плавающей точкой
Memory comparison of stringsmemcmp сравнивает данные, хранимые в строках после пустого терминатора строки
Missing byte reordering when transferring dataРазличный порядок байтов хоста и сети
Missing null in string arrayСтрока не завершает работу с нулевым символом
Misuse of a FILE objectИспользование копии объекта FILE
Misuse of errnoerrno неправильно проверяемый на состояние ошибки
Misuse of narrow or wide character stringУзкая (широкая) символьная строка передала широкой (узкой) строковой функции
Misuse of errno in a signal handlerВы читаете errno после вызова errno- установка функции в обработчике сигнала
Misuse of structure with flexible array memberВыделение памяти игнорирует член массива с переменными границами
Misuse of sign-extended character valueПреобразование типа данных с расширением знака вызывает неожиданное поведение
Misuse of return value from nonreentrant standard functionУказатель на статический буфер от предыдущего вызова используется несмотря на последующий вызов, который изменяет буфер
Modification of internal buffer returned from nonreentrant standard functionФункция пытается изменить внутренний буфер, возвращенный в неповторно используемую стандартную функцию
Noncompliance with AUTOSAR specificationAPI-функция RTE используется с аргументами, которые нарушают стандартную спецификацию AUTOSAR
Overlapping assignmentПерекрытие памяти между левыми и правыми сторонами присвоения
Possible misuse of sizeofИспользование sizeof оператор может вызвать непреднамеренные результаты
Possibly unintended evaluation of expression because of operator precedence rulesПравила приоритета оператора вызывают неожиданный порядок оценки в арифметическом выражении
Predefined macro used as objectВы используете стандартные макросы библиотеки, такие как assert и errno как объекты
Preprocessor directive in macro argumentВы используете директиву препроцессору в аргументе к подобному функции макросу
Qualifier removed in conversionПеременный спецификатор потерян во время преобразования
Return from computational exception signal handlerНеопределенное поведение, когда обработчик сигнала обычно возвращается из ошибки в программе
Side effect in arguments to unsafe macroМакрос содержит аргументы, которые могут быть оценены многократно или не оценены
Side effect of expression ignoredsizeof, _Alignof, или _Generic работает с выражением с побочным эффектом
Signal call from within signal handlerНестойкий обработчик сигнала, вызывая signal() в Windows система вызывает состояние состязания
Shared data access within signal handlerДоступ или модификация разделяемых данных вызывают противоречивое состояние
Standard function call with incorrect argumentsАргумент к стандартной функции не удовлетворяет требования для использования в функции
Stream argument with possibly unintended side effectsПотоковые побочные эффекты аргумента происходят несколько раз
Too many va_arg calls for current argument listКоличество вызовов va_arg превышает количество аргументов, переданных функции variadic
Typedef mismatchНе сочетайтесь между typedef операторы
Universal character name from token concatenationВы создаете универсальное имя персонажа путем присоединения лексем с ## оператор
Unnamed namespace in header fileЗаголовочный файл содержит продвижение пространства имен без имени к повторным определениям
Unsafe conversion between pointer and integerНеправильно выровненные или недопустимые результаты преобразований между типами указателей и целочисленными типами
Unsafe conversion from string to numerical valueПредставьте в виде строки к преобразованию чисел без проверок валидации
Use of indeterminate stringИспользование неподтвержденного буфера от функции fgets-семейства
Use of memset with size argument zeroАргумент Size функции в memset семейство является нулем
Variable length array with nonpositive sizeРазмер массива переменной длины является нулем или отрицательный
Writing to const qualified objectОбъект объявляется с const спецификатор изменяется
Wrong type used in sizeofsizeof аргумент не совпадает с указанным типом
Дефекты потока данных
Code deactivated by constant false conditionСегмент кода деактивирован #if 0 директива или if(0) условие
Dead codeКод не выполняется
Missing return statementФункция не делает возвращаемого значения, хотя возвращаются, типом не является void
Non-initialized variableПеременная, не инициализированная перед использованием
Non-initialized pointerУказатель, не инициализированный прежде, разыменовывает
Partially accessed arrayМассив частично чтение или записанный перед концом осциллографа
Pointer to non-initialized value converted to const pointerУказатель на постоянный присвоенный адрес, который не содержит значение
Static uncalled functionФункция со статическим контекстом, не названным в файле
Unreachable codeКод, не выполненный из-за предыдущих операторов управления
Useless ifНенужный, если условное выражение
Variable shadowingПеременная скрывает другую переменную того же имени с вложенным осциллографом
Write without a further readПеременная никогда не читала после присвоения
Дефекты безопасности
File access between time of check and use (TOCTOU)Файл или папка могут изменить состояние из-за гонки доступа
File descriptor exposure to child processСкопированный дескриптор файла используется в нескольких процессах
File manipulation after chroot without chdirСвязанные с путем уязвимости для файла, которым управляют после вызова chroot
Inappropriate I/O operation on device filesОперация может привести к уязвимостям системы обеспечения безопасности или системному отказу
Unsafe call to a system functionНесанированный аргумент команды имеет годные для использования уязвимости
Use of non-secure temporary fileВременное сгенерированное имя файла, не безопасное
Vulnerable path manipulationПараметр пути с /../, /abs/path/, или другие небезопасные элементы
Bad order of dropping privilegesПропущенный выше поднятые привилегии прежде, чем пропустить ниже поднятые привилегии
Privilege drop not verifiedАтакующий может получить непреднамеренный поднятый доступ к программе
Umask used with chmod-style argumentsАргумент к umask позволяет внешнему пользователю слишком много управления
Vulnerable permission assignmentsАргумент дает полномочия чтения/записи/поиска внешним пользователям
Unsafe standard encryption functionФункция не повторно используема или использует опасный алгоритм шифрования
Unsafe standard functionФункция, небезопасная в связанных с безопасностью целях
Use of dangerous standard functionОпасные функции вызывают возможное переполнение буфера в целевом буфере
Use of obsolete standard functionУстаревшие стандартные программы могут вызвать проблемы мобильности и уязвимости системы обеспечения безопасности
Deterministic random output from constant seedСтандартная программа отбора использует постоянный seed, делающий детерминированный выход
Predictable random output from predictable seedСтандартная программа отбора использует предсказуемый seed, делающий предсказуемый выход
Vulnerable pseudo-random number generatorИспользуя криптографически слабый генератор псевдослучайного числа
Errno not checkederrno не проверяется на состояние ошибки после вызова функции
Execution of a binary from a relative path can be controlled by an external actorКоманда с относительным путем уязвима для вредоносной атаки
Function pointer assigned with absolute addressКонстантное выражение используется, когда функциональный адрес уязвим для инжекции кода
Hard-coded sensitive dataУязвимые данные отсоединены в коде, например, как строковые литералы
Incorrect order of network connection operationsСокет правильно не устанавливается из-за плохого порядка шагов связи или недостающих шагов
Information leak via structure paddingДополнение байтов может содержать уязвимую информацию
Load of library from a relative path can be controlled by an external actorБиблиотека, загруженная с относительным путем, уязвима для вредоносных атак
Mismatch between data length and sizeАргумент размера данных не вычисляется из фактической длины данных
Missing case for switch conditionswitch переменная, не покрытая случаями и случаем по умолчанию, отсутствует
Misuse of readlink()Третий аргумент readlink не оставляет пробел для пустого терминатора строки в буфере
Returned value of a sensitive function not checkedЧувствительные функции, вызванные, не проверяя на неожиданные возвращаемые значения и ошибки
Sensitive data printed outФункция распечатывает уязвимые данные
Sensitive heap memory not cleared before releaseУязвимые данные, не очищенные или выпущенные стандартной программой памяти
Uncleared sensitive data in stackПеременная в стеке не очищена и содержит уязвимые данные
Дефекты криптографии
Constant block cipher initialization vectorВектор инициализации является постоянным вместо рандомизированного
Predictable block cipher initialization vectorВектор инициализации сгенерирован от слабого генератора случайных чисел
Missing block cipher initialization vectorКонтекст, используемый для шифрования или дешифрования, сопоставлен с вектором инициализации NULL или не сопоставлен с вектором инициализации
Constant cipher keyКлюч шифрования или ключ расшифровки являются постоянными вместо рандомизированного
Predictable cipher keyКлюч шифрования или ключ расшифровки сгенерированы от слабого генератора случайных чисел
Missing cipher keyКонтекст, используемый для шифрования или дешифрования, сопоставлен с ключом NULL или не сопоставлен с ключом
Inconsistent cipher operationsВы выполняете шаги шифрования и дешифрования по очереди с тем же контекстом шифра без промежуточной реинициализации
Missing cipher data to processИтоговый шаг шифрования или дешифрования выполняется без предыдущих шагов обновления
Missing cipher final stepВы не выполняете последний шаг после шагов обновления для шифрования или дешифрования данных
Missing cipher algorithmАлгоритм шифрования или дешифрования не сопоставлен с контекстом шифра
Weak cipher algorithmАлгоритм шифрования, сопоставленный с контекстом шифра, слаб
Weak cipher modeРежим шифрования, сопоставленный с контекстом шифра, слаб
Context initialized incorrectly for cryptographic operationКонтекст, используемый для операции шифрования с открытым ключом, инициализируется для различной операции
Incorrect key for cryptographic algorithmОперация шифрования с открытым ключом не поддерживается алгоритмом, используемым в инициализации контекста
Missing data for encryption, decryption or signing operationДанные предусмотрели операцию шифрования с открытым ключом, NULL, или длина данных является нулем
Missing parameters for key generationКонтекст, используемый для генерации ключей, сопоставлен параметрами NULL
Missing peer keyКонтекст, используемый для разделяемой секретной деривации, сопоставлен с равноправным ключом NULL или не сопоставлен с равноправным ключом вообще
Missing private keyКонтекст, используемый для операции криптографии, сопоставлен с закрытым ключом NULL или не сопоставлен с закрытым ключом вообще
Missing public keyКонтекст, используемый для операции криптографии, сопоставлен с открытым ключом NULL или не сопоставлен с открытым ключом вообще
Nonsecure parameters for key generationКонтекст, используемый для генерации ключей, сопоставлен слабыми параметрами
Incompatible padding for RSA algorithm operationОперация Cryptography не поддерживается дополнительным набором типа в контексте
Missing blinding for RSA algorithmКонтекст, используемый в дешифровании или верификации подписи, не ослеплен против атак временным анализом
Missing padding for RSA algorithmКонтекст, используемый в шифровании или подписании операции, не сопоставлен ни с каким дополнением
Nonsecure RSA public exponentКонтекст, используемый в генерации ключей, сопоставлен с низким значением экспоненты
Weak padding for RSA algorithmКонтекст, используемый в шифровании или подписании операции, сопоставлен с небезопасным дополнительным типом
Context initialized incorrectly for digest operationКонтекст, используемый для операции обзора, инициализируется для различной операции обзора
Missing final step after hashing update operationХеш является неполным или незащищенным
Missing hash algorithmКонтекст в стандартной программе EVP инициализируется без хеш-алгоритма
Missing salt for hashing operationХешированные данные уязвимы для табличного нападения радуги
No data added into contextВыполнение операции хеша на пустом контексте может вызвать ошибки времени выполнения
Nonsecure hash algorithmКонтекст, используемый для создания дайджеста сообщения, сопоставлен со слабым алгоритмом
Missing certification authority listСертификату для аутентификации нельзя доверять
Missing private key for X.509 certificateПропавшие без вести ключевой силы приводят к ошибке времени выполнения или незащищенному шифрованию
Missing X.509 certificateСервер или клиент не могут аутентифицироваться
Nonsecure SSL/TLS protocolКонтекст, используемый для обработки связей SSL/TLS, сопоставлен со слабым протоколом
Server certificate common name not checkedАтакующий может использовать допустимый сертификат, чтобы явиться олицетворением хоста, которому доверяют,
TLS/SSL connection method not setПрограмма не может определить, вызвать ли стандартные программы сервера или клиент
TLS/SSL connection method set incorrectlyПрограмма вызывает функции, которые не совпадают с ролью, установленной методом связи
X.509 peer certificate not checkedСвязь может быть уязвима для атак "человек посередине"
Испорченные дефекты данных
Array access with tainted indexИндекс массива из небезопасного источника возможно вне границ массивов
Command executed from externally controlled pathПараметр пути из небезопасного источника
Execution of externally controlled commandАргумент команды из небезопасного источника, уязвимого для инжекции команды операционной системы
Host change using externally controlled elementsИзменение идентификатора хоста из небезопасного источника
Library loaded from externally controlled pathИспользуя аргумент библиотеки от внешне управляемого пути
Loop bounded with tainted valueЦиклом управляет значение из небезопасного источника
Memory allocation with tainted sizeАргумент Size к функции памяти из небезопасного источника
Pointer dereference with tainted offsetСмещение из небезопасного источника, и разыменуйте, может выйти за пределы
Tainted division operandОперанды операции деления (/) произойдите из небезопасного источника
Tainted modulo operandОперанды операции остатка (%) произойдите из небезопасного источника
Tainted NULL or non-null-terminated stringАргумент из небезопасного источника и может быть NULL или не ОТКЛЮЧЕННЫЙ ПУСТЫМ УКАЗАТЕЛЕМ
Tainted sign change conversionЗначение из небезопасного источника изменяет знак
Tainted size of variable length arrayРазмер массива переменной длины (VLA) из небезопасного источника и может быть нулем, отрицательным, или слишком большим
Tainted string formatАргумент формата ввода из небезопасного источника
Use of externally controlled environment variableЗначение переменной окружения из небезопасного источника
Use of tainted pointerУказатель из небезопасного источника может быть NULL или указать на неизвестную память
Дефекты параллелизма
Asynchronously cancellable threadВызывающий поток может быть отменен в небезопасном состоянии
Atomic load and store sequence not atomicПеременная, доступная между загрузкой и операциями хранилища
Atomic variable accessed twice in an expressionПеременная может быть изменена между доступами
Automatic or thread local variable escaping from a threadПеременная передается от одного потока до другого, не гарантируя, что переменная остается в живых через длительность последнего потока
Blocking operation while holding lockЗадача выполняет долгую операцию при содержании блокировки
Data raceНесколько задач выполняют незащищенные неатомарные операции на совместно используемой переменной
Data race including atomic operationsНесколько задач выполняют незащищенные операции на совместно используемой переменной
Data race on adjacent bit fieldsНесколько потоков выполняют незащищенные операции на смежных битовых полях структуры разделяемых данных
Data race through standard library function callНесколько задач выполняют незащищенные вызовы к небезопасной потоком стандартной библиотечной функции
DeadlockВызовите последовательность, чтобы заблокировать причину функций две задачи блокировать друг друга
Destruction of locked mutexЗадача пытается уничтожить взаимное исключение в заблокированном состоянии
Double lockФункция блокировки вызвана дважды в задаче без промежуточного вызова, чтобы разблокировать функцию
Double unlockРазблокируйте функцию, называется дважды в задаче без промежуточного вызова, чтобы заблокировать функцию
Function that can spuriously fail not wrapped in loopЦикл проверяет условие отказа после возможного побочного отказа
Function that can spuriously wake up not wrapped in loopЦикл проверяет условие пробуждения после возможного побочного пробуждения
Join or detach of a joined or detached threadРаспараллельте, к которому ранее соединили или отсоединился, соединен или отсоединен снова
Missing lockРазблокируйте функцию без функции блокировки
Missing or double initialization of thread attributeДублированная инициализация потока приписывает или неинициализированный атрибут потока, используемый в функциях, которые ожидают инициализированные атрибуты
Missing unlockФункция блокировки без разблокировала функцию
Multiple mutexes used with same condition variableПотоки с помощью различных взаимных исключений, когда одновременно ожидание на той же условной переменной является неопределенным поведением
Multiple threads waiting on same condition variableИспользуя cnd_signal разбудить один из потоков может привести к неопределенному блокированию
Signal call in multithreaded programПрограмма с несколькими потоками использует signal функция
Thread-specific memory leakДинамически выделенная специфичная для потока память, не освобожденная перед концом потока
Use of signal killing threadНепойманный сигнал уничтожает целый процесс вместо определенного потока
Use of undefined thread IDРаспараллельте ID от не пройдено создания потока, используемого в последующих функциях потока
Объектно-ориентированные дефекты
*this not returned in copy assignment operatoroperator= метод не возвращает указатель на текущий объект
Base class assignment operator not calledОператор присваивания копии не вызывает операторы присваивания копии основных подобъектов
Base class destructor not virtualКласс не может вести себя полиморфно для удаления объектов производного класса
Bytewise operations on nontrivial class objectПредставления значения могут быть неправильно инициализированы или сравнены
Conversion or deletion of incomplete class pointerВы удаляете или бросаете к указателю на неполный класс
Copy constructor or assignment operator modifying source operandОперация копии изменяет элемент данных исходного объекта
Copy constructor not called in initialization listКонструктор копии не вызывает конструкторов копии некоторых членов или базовых классов
Incompatible types prevent overridingМетод производного класса скрывает virtual метод базового класса вместо того, чтобы заменить его
Lambda used as typeid operandtypeid используется на лямбда-выражении
Member not initialized in constructorКонструктор не инициализирует некоторые члены класса
Missing explicit keywordКонструктор или пользовательский оператор преобразования, пропускающий explicit спецификатор
Missing virtual inheritanceБазовый класс наследован фактически и нефактически в той же иерархии
Object slicingОбъект производного класса, переданный значением, чтобы функционировать параметром базового класса
Operator new not overloaded for possibly overaligned classВыделенное устройство хранения данных может быть меньшего размера, чем объектное требование выравнивания
Partial override of overloaded virtual functionsКласс заменяет часть наследованных виртуальных функций с именем
Return of non const handle to encapsulated data memberМетод возвращает указатель или ссылку на внутренний член объекта
Self assignment not tested in operatorОператор присваивания копии не тестирует на самоприсвоение
Дефекты управления ресурсами
Closing a previously closed resourceФункция закрывает ранее закрытый поток
Opening previously opened resourceОткрытие уже открытого файла
Resource leakПоток файла, не закрытый перед FILE концы осциллографа указателя или указатель повторно присвоены
Use of previously closed resourceФункция работает с ранее закрытым потоком
Writing to read-only resourceФайл, первоначально открытый как только для чтения, изменяется
Дефекты исключения C++
Exception caught by valuecatch оператор принимает объект значением
Exception handler hidden by previous handlercatch оператор не достигнут из-за более раннего catch оператор для того же исключения
Noexcept function exits with exceptionФункции, заданные как noexcept, noexcept(true) или noexcept(<true condition>) выходы за исключением, которое вызывает аварийное завершение выполнения программы, ведя к утечке ресурсов и уязвимости системы обеспечения безопасности
Throw argument raises unexpected exceptionВыражение аргумента в throw оператор повышает непредвиденные исключительные ситуации, ведя к утечкам ресурсов и уязвимостям системы обеспечения безопасности
Дефекты эффективности
A move operation may throwБросок операций пересылки может привести к контейнерам STL с помощью соответствующих операций копии
Const parameter values may cause unnecessary data copiesЗначения параметров const могут предотвратить операцию пересылки, приводящую к более интенсивной эффективностью операции копии
Const return values may cause unnecessary data copiesВозвращаемые значения const могут предотвратить операцию пересылки, приводящую к более интенсивной эффективностью операции копии
Const rvalue reference parameter may cause unnecessary data copiesconst- мыс rvalue ссылки предотвращает предназначенную операцию пересылки
Const std::move input may cause a more expensive object copyConst std::move введите не может быть перемещен и результаты в более дорогой операции копии
Empty destructors may cause unnecessary data copiesОбъявленные пользователями пустые деструкторы предотвращают автоматическую генерацию конструкторов перемещения и перемещают операторы присваивания
std::move called on an unmovable typestd::move используемый на типе класса без конструктора перемещения или оператора присваивания перемещения
Move operation uses copyКонструктор перемещения или оператор присваивания перемещения используют операции копии на базовых классах или элементах данных
Expensive constant std::string constructionОбъект постоянной строки создается из постоянных данных, приводящих к неэффективному коду
Expensive copy in a range-based for loop iterationПеременная цикла основанного на области значений for цикл копируется с элементов области значений вместо того, чтобы быть сосланным, приводя к неэффективному коду
Expensive local variable copyЛокальная переменная создается копией с const ссылка и не измененный позже
Expensive pass by valueПараметр может быть дорогим, чтобы скопировать
Expensive return by valueФункции возвращают крупносерийный выходной параметр значением вместо ссылкой или указателем
Missing constexpr specifierconstexpr спецификатор может использоваться на переменной или функции для оценки времени компиляции
Expensive std::string::c_str() use in a std::string operationВместо std::string объект, строковая операция использует струну до, полученную из std::string функции включая std::string::c_str, std::string::data(), std::string::at(), или std::string::operator[], получившийся в неэффективном коде
Expensive use of non-member std::string operator+() instead of a simple appendЛицо, не являющееся членом какой-либо организации, std::string operator+() функция вызвана когда добавление (или +=) метод был бы более эффективным
Expensive use of std::string methods instead of more efficient overloadstd::string метод вызван строковым литералом известной длины вместо одного заключенного в кавычки символа
Expensive use of std::string with empty string literalИспользование std::string с пустой строкой литерал может быть заменен менее дорогими вызовами std::basic_string функции членства
Inefficient string length computationДлина строки, вычисленная при помощи длины строки, функционирует по возврату из std::basic_string::c_str() вместо того, чтобы использовать std::basic_string::length()
std::endl may cause an unnecessary flushstd::endl используется вместо более эффективного \n
Use of new or make_unique instead of more efficient make_sharedИспользуя new или make_unique инициализировать или сбросить shared_ptr результаты в дополнительном выделении памяти
Expensive use of a standard algorithm when a more efficient method existsФункции от algorithm библиотека неправильно используется с несоответствующими входными параметрами, приводящими к неэффективному коду
Expensive use of container's count methodФункциональный член count() из контейнера используется для проверки, если ключ присутствует, ведя к неэффективному коду
Inefficient use of sprintfФункциональный sprintf копии представляют в виде строки вместо более эффективного strcpy
Expensive dynamic castДорогой dynamic_cast используется вместо более эффективного static_cast или const_cast
Expensive logical operationЛогическая операция требует оценки обоих операндов из-за их порядка, приводящего к неэффективному коду
Expensive post-increment operationОбъект постпостепенно увеличивается, когда предварительное постепенное увеличение быстрее
Unnecessary PaddingЧлены struct дополнены, чтобы выполнить требование выравнивания, когда реорганизация членов, чтобы выполнить это требование сохраняет память
Хорошие дефекты практики
Ambiguous declaration syntaxСинтаксис объявления может быть интерпретирован как объектное объявление или часть объявления функции
Bitwise and arithmetic operation on the same dataОператор со смешанными битовыми и арифметическими операциями
C++ reference to const-qualified type with subsequent modificationСсылка на const- квалифицированный тип впоследствии изменяется
C++ reference type qualified with const or volatileСсылочный тип объявляется с избыточным const или volatile спецификатор
Delete of void pointerdelete работает с void* указатель, указывающий на объект
File does not compileФайл имеет ошибку компиляции
Hard-coded buffer sizeРазмер буфера памяти является численным значением вместо символьной константы
Hard-coded loop boundaryКонтур цикла является численным значением вместо символьной константы
Hard-coded object size used to manipulate memoryМанипуляция с памятью с трудно закодированным размером вместо sizeof
Incorrectly indented statementДобавление отступа оператора неправильно заставляет его появиться как часть блока
Incorrect syntax of flexible array member sizeЧлен массива с переменными границами задал с нулевым размером или один
Line with more than one statementНесколько операторов на линии
Macro terminated with a semicolonМакроопределение заканчивается точкой с запятой
Macro with multiple statementsМакрос состоит из нескольких отключенных точкой с запятой операторов, заключенных в фигурные скобки или нет
Missing break of switch caseНикакие комментарии в конце случая переключателя без оператора завершения
Missing overload of allocation or deallocation functionТолько одна функция в паре функции освобождения выделения перегружается
Missing reset of a freed pointerУказатель free не сопровождаемый оператором сброса, чтобы очистить оставшиеся данные
Possibly inappropriate data type for switch expressionswitch выражение имеет тип данных кроме char, короткого, международного или перечислимого
Semicolon on same line as if, for or while statementТочка с запятой на той же линии приводит к пустому телу ifдля или while оператор
Unmodified variable not const-qualifiedПеременная не const- квалифицированное но значение переменных, не измененное в течение времени жизни
Unused parameterПрототип функции имеет параметры не чтение или написанный в теле функции
Use of a forbidden functionФункция появляется в черном списке запрещенных функций
Use of setjmp/longjmpsetjmp и longjmp вызовите отклонение от нормального потока управления
Useless expressions in sizeof operandsizeof операнд содержит выражение, которое не выполнено

Кодирование стандартов

Директивы MISRA C:2012 и правила
MISRA C:2012 Dir 1.1Любое заданное реализацией поведение, от которого зависит выход программы, должно быть зарегистрировано и изучено
MISRA C:2012 Dir 2.1Все исходные файлы должны скомпилировать без любых ошибок компиляции
MISRA C:2012 Dir 4.1Отказы во время выполнения должны быть минимизированы
MISRA C:2012 Dir 4.3Ассемблер должен инкапсулироваться и изолироваться
MISRA C:2012 Dir 4.4Разделы кода не должны быть то, " закомментировал"
MISRA C:2012 Dir 4.5Идентификаторы в том же пространстве имен с перекрывающейся видимостью должны быть типографским способом однозначными
MISRA C:2012 Dir 4.6typedefs это указывает, что размер и со знаком должен использоваться вместо основных числовых типов
MISRA C:2012 Dir 4.7Если функция возвратит информацию об ошибке, то та информация об ошибке должна быть протестирована
MISRA C:2012 Dir 4.8Если указатель на структуру или объединение никогда не разыменовывается в модуле перевода, то реализация объекта должна быть скрыта
MISRA C:2012 Dir 4.9Функция должна использоваться в предпочтении к подобному функции макросу, где они являются взаимозаменяемыми
MISRA C:2012 Dir 4.10Меры предосторожности должны быть приняты для того, чтобы предотвратить содержимое заголовочного файла, включаемого несколько раз
MISRA C:2012 Dir 4.11Валидность значений, переданных библиотечным функциям, должна проверяться
MISRA C:2012 Dir 4.12Динамическое выделение памяти не должно использоваться
MISRA C:2012 Dir 4.13Функции, которые спроектированы, чтобы обеспечить операции на ресурсе, должны быть вызваны в соответствующей последовательности
MISRA C:2012 Dir 4.14Валидность значений, полученных от внешних источников, должна проверяться
MISRA C:2012 Rule 1.1Программа не должна содержать нарушения стандартного Синтаксиса C и ограничения, и не должна превышать пределы перевода реализации
MISRA C:2012 Rule 1.2Расширения языка не должны использоваться
MISRA C:2012 Rule 1.3Не должно быть никакого вхождения неопределенного или критического незаданного поведения
MISRA C:2012 Rule 1.4Функции языка на стадии становления не должны быть использованы
MISRA C:2012 Rule 2.1Проект не должен содержать недостижимый код
MISRA C:2012 Rule 2.2Не должно быть никакого мертвого кода
MISRA C:2012 Rule 2.3Проект не должен содержать неиспользованные описания типа
MISRA C:2012 Rule 2.4Проект не должен содержать неиспользованные объявления тега
MISRA C:2012 Rule 2.5Проект не должен содержать неиспользованные макро-объявления
MISRA C:2012 Rule 2.6Функция не должна содержать неиспользованные описания меток
MISRA C:2012 Rule 2.7В функциях не должно быть никаких неиспользованных параметров
MISRA C:2012 Rule 3.1Последовательности символов /* и // не буду использоваться в рамках комментария
MISRA C:2012 Rule 3.2Соединение линии не должно использоваться в // комментарии
MISRA C:2012 Rule 4.1Должны быть отключены восьмеричные и шестнадцатеричные escape-последовательности
MISRA C:2012 Rule 4.2Trigraphs не должен использоваться
MISRA C:2012 Rule 5.1Внешние идентификаторы должны быть отличными
MISRA C:2012 Rule 5.2Идентификаторы, объявленные в том же осциллографе и пространстве имен, должны быть отличными
MISRA C:2012 Rule 5.3Идентификатор, объявленный во внутреннем осциллографе, не должен скрывать идентификатор, объявленный во внешнем осциллографе
MISRA C:2012 Rule 5.4Макро-идентификаторы должны быть отличными
MISRA C:2012 Rule 5.5Идентификаторы должны быть отличны от макро-имен
MISRA C:2012 Rule 5.6Имя определения типа должно быть уникальным идентификатором
MISRA C:2012 Rule 5.7Имя тега должно быть уникальным идентификатором
MISRA C:2012 Rule 5.8Идентификаторы, которые задают объекты или функции с внешним рычажным устройством, должны быть уникальными
MISRA C:2012 Rule 5.9Идентификаторы, которые задают объекты или функции с внутренним рычажным устройством, должны быть уникальными
MISRA C:2012 Rule 6.1Битовые поля должны только быть объявлены с соответствующим типом
MISRA C:2012 Rule 6.2Одноразрядные именованные битовые поля не должны иметь типа со знаком
MISRA C:2012 Rule 7.1Восьмеричные константы не должны использоваться
MISRA C:2012 Rule 7.2Суффикс “u” или “U” должен быть применен ко всем целочисленным константам, которые представлены в типе без знака
MISRA C:2012 Rule 7.3Символ нижнего регистра "l" не должен использоваться в литеральном суффиксе
MISRA C:2012 Rule 7.4Строковый литерал не должен быть присвоен объекту, если тип объекта не будет “указателем на квалифицированный к const char”
MISRA C:2012 Rule 8.1Типы должны быть явным образом заданы
MISRA C:2012 Rule 8.2Функциональные типы должны быть в прототипной форме именованными параметрами
MISRA C:2012 Rule 8.3Все объявления объекта или функции должны использовать те же имена и ввести спецификаторы
MISRA C:2012 Rule 8.4Совместимое объявление должно отобразиться, когда объект или функция с внешним рычажным устройством будут заданы
MISRA C:2012 Rule 8.5Внешний объект или функция должны быть объявлены однажды в одном и только одном файле
MISRA C:2012 Rule 8.6Идентификатор с внешним рычажным устройством должен иметь точно одно внешнее определение
MISRA C:2012 Rule 8.7Функции и объекты не должны быть заданы с внешним рычажным устройством, если на них ссылаются только в одном модуле перевода
MISRA C:2012 Rule 8.8Статический спецификатор класса памяти должен использоваться во всех объявлениях объектов и функций, которые имеют внутреннее рычажное устройство
MISRA C:2012 Rule 8.9Объект должен быть задан в области действия блока, если ее идентификатор только появляется в одной функции
MISRA C:2012 Rule 8.10Подставляемая функция должна быть объявлена со статическим классом памяти
MISRA C:2012 Rule 8.11Когда массив с внешним рычажным устройством объявляется, его размер должен быть явным образом задан
MISRA C:2012 Rule 8.12В рамках списка перечислителей значение неявно заданного постоянного перечисления должно быть уникальным
MISRA C:2012 Rule 8.13Указатель должен указать на квалифицированный к const тип, когда это возможно,
MISRA C:2012 Rule 8.14Ограничить спецификатор типа не должен использоваться
MISRA C:2012 Rule 9.1Значение объекта с длительностью автоматического хранения не должно быть считано, прежде чем это было установлено
MISRA C:2012 Rule 9.2Инициализатор для агрегата или объединения должен быть заключен в фигурные скобки
MISRA C:2012 Rule 9.3Массивы не должны быть частично инициализированы
MISRA C:2012 Rule 9.4Элемент объекта не должен быть инициализирован несколько раз
MISRA C:2012 Rule 9.5Где обозначенные инициализаторы используются, чтобы инициализировать объект массивов, что размер массива должен быть задан явным образом
MISRA C:2012 Rule 10.1Операнды не должны иметь несоответствующего существенного типа
MISRA C:2012 Rule 10.2Выражения чрезвычайно типа символов не должны использоваться неуместно, кроме того, и операции вычитания
MISRA C:2012 Rule 10.3Значение выражения не должно быть присвоено объекту с более узким существенным типом или различной существенной категории типа
MISRA C:2012 Rule 10.4Оба операнда оператора, в котором выполняются обычные арифметические преобразования, должны иметь ту же существенную категорию типа
MISRA C:2012 Rule 10.5Значение выражения не должно быть брошено к несоответствующему существенному типу
MISRA C:2012 Rule 10.6Значение составного выражения не должно быть присвоено объекту с более широким существенным типом
MISRA C:2012 Rule 10.7Если составное выражение будет использоваться в качестве одного операнда оператора, в котором обычные арифметические преобразования выполняются затем, то другой операнд не должен иметь более широкого существенного типа
MISRA C:2012 Rule 10.8Значение составного выражения не должно быть брошено к различной существенной категории типа или более широкому существенному типу
MISRA C:2012 Rule 11.1Преобразования не должны выполняться между указателем на функцию и любым другим типом
MISRA C:2012 Rule 11.2Преобразования не должны выполняться между указателем на неполный тип и любым другим типом
MISRA C:2012 Rule 11.3Бросок не должен выполняться между указателем на тип объекта и указателем на различный тип объекта
MISRA C:2012 Rule 11.4Преобразование не должно быть выполнено между указателем на объект и целочисленным типом
MISRA C:2012 Rule 11.5Преобразование не должно быть выполнено от указателя, чтобы освободить в указатель на объект
MISRA C:2012 Rule 11.6Бросок не должен выполняться между указателем на пустоту и арифметическим типом
MISRA C:2012 Rule 11.7Бросок не должен выполняться между указателем на объект и типом арифметики нецелого числа
MISRA C:2012 Rule 11.8Бросок не должен удалять const или энергозависимую проверку от типа, на который указывает указатель
MISRA C:2012 Rule 11.9Макро-NULL должен быть единственной разрешенной формой целочисленного постоянного нулевого указателя
MISRA C:2012 Rule 12.1Приоритет операторов в рамках выражений должен быть сделан явным
MISRA C:2012 Rule 12.2Правый операнд оператора сдвига должен лечь в нуле области значений меньше, чем ширина в битах существенного типа левого операнда
MISRA C:2012 Rule 12.3Оператор запятой не должен использоваться
MISRA C:2012 Rule 12.4Оценка константных выражений не должна приводить к переносу беззнаковых целых чисел
MISRA C:2012 Rule 12.5sizeof оператор не должен иметь операнда, который является параметром функции, объявленным как “массив типа”
MISRA C:2012 Rule 13.1Списки инициализаторов не должны содержать персистентные побочные эффекты
MISRA C:2012 Rule 13.2Значение выражения и его персистентных побочных эффектов должно быть тем же самым согласно всем разрешенным порядкам оценки
MISRA C:2012 Rule 13.3Полное выражение, содержащее шаг (++) или декремент (-) оператор, не должно иметь никаких других потенциальных побочных эффектов кроме вызванного инкрементным или оператором понижения
MISRA C:2012 Rule 13.4Результат оператора присваивания не должен использоваться
MISRA C:2012 Rule 13.5Правый операнд логического && или || оператор не должен содержать персистентные побочные эффекты
MISRA C:2012 Rule 13.6Операнд sizeof оператора не должен содержать выражение, которое имеет потенциальные побочные эффекты
MISRA C:2012 Rule 14.1Счетчик цикла не должен иметь чрезвычайно типа с плавающей точкой
MISRA C:2012 Rule 14.2Цикл for должен быть правильно построен
MISRA C:2012 Rule 14.3Управление выражениями не должно быть инвариантным
MISRA C:2012 Rule 14.4Выражение управления оператора if и выражение управления оператора цикла должны иметь по существу булев тип
MISRA C:2012 Rule 15.1Оператор перехода не должен использоваться
MISRA C:2012 Rule 15.2Оператор перехода должен перейти к метке, объявленной позже в той же функции
MISRA C:2012 Rule 15.3Любая метка, на которую ссылается оператор перехода, должна быть объявлена в том же блоке, или в любом блоке, заключающем оператор перехода
MISRA C:2012 Rule 15.4Должен быть не больше, чем один оператор завершения, или оператор перехода раньше отключал любой оператор цикла
MISRA C:2012 Rule 15.5Функция должна иметь одну точку выхода в конце
MISRA C:2012 Rule 15.6Тело оператора цикла или оператора выбора должно быть составным оператором
MISRA C:2012 Rule 15.7Все, если … еще, если построения еще должны быть отключены с оператор
MISRA C:2012 Rule 16.1Все операторы switch должны быть правильно построены
MISRA C:2012 Rule 16.2Метка переключателя должна только использоваться, когда наиболее тесно заключающий составной оператор будет телом оператора switch
MISRA C:2012 Rule 16.3Безусловный оператор завершения должен отключить каждый пункт переключателя
MISRA C:2012 Rule 16.4Каждый оператор switch должен иметь метку по умолчанию
MISRA C:2012 Rule 16.5Метка по умолчанию должна появиться или как первое или как последняя метка переключателя оператора switch
MISRA C:2012 Rule 16.6Каждый оператор switch должен иметь по крайней мере два пункта переключателя
MISRA C:2012 Rule 16.7Выражение переключателя не должно иметь по существу булева типа
MISRA C:2012 Rule 17.1Функции <stdarg.h> не должны быть использованы
MISRA C:2012 Rule 17.2Функции не должны вызывать себя, ни один прямо или косвенно
MISRA C:2012 Rule 17.3Функция не должна быть объявлена неявно
MISRA C:2012 Rule 17.4Все выходные пути от функции с непустым типом возврата должны иметь явный оператор возврата с выражением
MISRA C:2012 Rule 17.5Аргумент функции, соответствующий параметру, который, как объявляют, имел тип массива, должен иметь соответствующее число элементов
MISRA C:2012 Rule 17.6Объявление параметра массива не должно содержать статическое ключевое слово между []
MISRA C:2012 Rule 17.7Значение, возвращенное функцией, имеющей непустой тип возврата, должно использоваться
MISRA C:2012 Rule 17.8Параметр функции не должен быть изменен
MISRA C:2012 Rule 18.1Указатель, следующий из арифметики на операнде указателя, должен обратиться к элементу того же массива как тот операнд указателя
MISRA C:2012 Rule 18.2Вычитание между указателями должно только быть применено к указателям, которые обращаются к элементам того же массива
MISRA C:2012 Rule 18.3Операторы отношения>,> =, <и <= не должны быть применены к объектам типа указателя кроме того, где они указывают в тот же объект
MISRA C:2012 Rule 18.4+, - + = и - = операторы не должны быть применены к выражению типа указателя
MISRA C:2012 Rule 18.5Объявления должны содержать не больше, чем два уровня вложения указателя
MISRA C:2012 Rule 18.6Адрес объекта с автоматическим хранением не должен быть скопирован в другой объект, который сохраняется после того, как первый объект прекратил существование
MISRA C:2012 Rule 18.7Члены массива с переменными границами не должны быть объявлены
MISRA C:2012 Rule 18.8Типы массива переменной длины не должны использоваться
MISRA C:2012 Rule 19.1Объект не должен быть присвоен или скопирован в перекрывающийся объект
MISRA C:2012 Rule 19.2Ключевое слово объединения не должно использоваться
MISRA C:2012 Rule 20.1Директивам #include должны только предшествовать директивы препроцессору или комментарии
MISRA C:2012 Rule 20.2', "или \символы и/* или//последовательности символов не должны происходить на имя заголовочного файла
MISRA C:2012 Rule 20.3#include директива должна сопровождаться или <имя файла> или последовательность "имени файла"
MISRA C:2012 Rule 20.4Макрос не должен быть задан с тем же именем как ключевое слово
MISRA C:2012 Rule 20.5#undef не должен использоваться
MISRA C:2012 Rule 20.6Лексемы, которые похожи на директиву предварительной обработки, не должны происходить в макро-аргументе
MISRA C:2012 Rule 20.7Выражения, следующие из расширения макро-параметров, должны быть заключены в круглые скобки
MISRA C:2012 Rule 20.8Выражение управления #if или директивы предварительной обработки #elif должно оценить к 0 или 1
MISRA C:2012 Rule 20.9Все идентификаторы, используемые в выражении управления #if или директив предварительной обработки #elif, должны быть #define’d перед оценкой
MISRA C:2012 Rule 20.10# и ## операторы препроцессора не должны использоваться
MISRA C:2012 Rule 20.11Макро-параметр сразу после # оператора не должен сразу сопровождаться ## оператором
MISRA C:2012 Rule 20.12Макро-параметр, используемый в качестве операнда к # или ## операторам, который самостоятельно удовлетворяет дальнейшей макро-замене, должен только использоваться в качестве операнда к этим операторам
MISRA C:2012 Rule 20.13Линия, первая лексема которой является #, должна быть допустимой директивой предварительной обработки
MISRA C:2012 Rule 20.14Весь #else, #elif и #endif директивы препроцессору должен находиться в том же файле как #if, #ifdef или #ifndef директива, с которой они связаны
MISRA C:2012 Rule 21.1#define и #undef не должны использоваться на зарезервированном идентификаторе или зарезервировали макро-имя
MISRA C:2012 Rule 21.2Зарезервированный идентификатор или зарезервированное макро-имя не должны быть объявлены
MISRA C:2012 Rule 21.3Функции выделения памяти и освобождения <stdlib.h> не буду использоваться
MISRA C:2012 Rule 21.4Стандартный заголовочный файл <setjmp.h> не должен использоваться
MISRA C:2012 Rule 21.5Стандартный заголовочный файл <signal.h> не должен использоваться
MISRA C:2012 Rule 21.6Стандартные функции ввода/вывода Библиотеки не должны использоваться
MISRA C:2012 Rule 21.7Стандартные Библиотечные функции atof, atoi, atol, и atoll функции <stdlib.h> не буду использоваться
MISRA C:2012 Rule 21.8Стандартные Библиотечные функции abortвыход, getnenv и system из <stdlib.h> не буду использоваться
MISRA C:2012 Rule 21.9Стандартные библиотечные функции Библиотеки bsearch и qsort из <stdlib.h> не буду использоваться
MISRA C:2012 Rule 21.10Стандартные функции времени и даты Библиотеки не должны использоваться
MISRA C:2012 Rule 21.11Стандартный заголовочный файл <tgmath.h> не должен использоваться
MISRA C:2012 Rule 21.12Функции обработки исключений <fenv.h> не должен использоваться
MISRA C:2012 Rule 21.13Любое значение передало функции в <ctype.h> будет представимым как unsigned char или быть значением EOF
MISRA C:2012 Rule 21.14Стандартная Библиотечная функция memcmp не буду использоваться, чтобы выдержать сравнение, пустой указатель отключил строки
MISRA C:2012 Rule 21.15Аргументы указателя к Стандартным Библиотечным функциям memcpy, memmove и memcmp будут указатели на квалифицированные или неполные версии совместимых типов
MISRA C:2012 Rule 21.16Аргументы указателя к Стандартной Библиотечной функции memcmp укажу или на тип указателя, чрезвычайно тип со знаком, тип чрезвычайно без знака, по существу булев тип или на по существу перечислимый тип
MISRA C:2012 Rule 21.17Использование обработки строки функционирует от <string.h> не приведу к доступам вне границ объектов, на которые ссылаются их параметры указателя
MISRA C:2012 Rule 21.18size_t аргумент передал любой функции в <string.h> буду иметь соответствующее значение
MISRA C:2012 Rule 21.19Указатели возвращены Стандартными Библиотечными функциями localeconvgetenv, setlocale или strerror буду только использоваться, как будто у них есть указатель на const- квалифицированный тип
MISRA C:2012 Rule 21.20Указатель возвращен Стандартными Библиотечными функциями asctime, ctime, gmtime, localtime, localeconvgetenv, setlocale или strerror не буду использоваться после последующего вызова той же функции
MISRA C:2012 Rule 21.21Стандартная Библиотечная функция system из <stdlib.h> не буду использоваться
MISRA C:2012 Rule 22.1Все средства, полученные динамически посредством Стандартных Библиотечных функций, должны быть явным образом высвобождены
MISRA C:2012 Rule 22.2Блок памяти должен только быть освобожден, если это было выделено посредством Стандартной Библиотечной функции
MISRA C:2012 Rule 22.3Тот же файл не должен быть открыт для доступа для чтения и доступа для записи одновременно на различных потоках
MISRA C:2012 Rule 22.4Не должно быть никакой попытки записать в поток, который был открыт как только для чтения
MISRA C:2012 Rule 22.5Указатель на FILE объект не должен быть разыменован
MISRA C:2012 Rule 22.6Значение указателя на FILE не буду использоваться после того, как связанный поток был закрыт
MISRA C:2012 Rule 22.7Макро-EOF должен только быть по сравнению с немодифицированным возвращаемым значением от любой Стандартной Библиотечной функции, способной к возврату EOF
MISRA C:2012 Rule 22.8Значение errno буду обнулен до вызова errno- функция установки
MISRA C:2012 Rule 22.9Значение errno буду протестирован против нуля после вызова errno- установка функции
MISRA C:2012 Rule 22.10Значение errno буду только протестирован, когда последней функцией, которая будет названа, был errno- установка функции
CERT C правила и рекомендации
CERT C: Rule PRE30-CНе создавайте универсальное имя персонажа посредством конкатенации
CERT C: Rule PRE31-CИзбегайте побочных эффектов в аргументах к небезопасным макросам
CERT C: Rule PRE32-CНе используйте директивы препроцессору в вызовах подобных функции макросов
CERT C: Rule DCL30-CОбъявите объекты с соответствующими продолжительностями хранения
CERT C: Rule DCL31-CОбъявите идентификаторы перед использованием их
CERT C: Rule DCL36-CНе объявляйте идентификатор с конфликтными классификациями рычажных устройств
CERT C: Rule DCL37-CНе объявляйте или задавайте зарезервированный идентификатор
CERT C: Rule DCL38-CИспользуйте правильный синтаксис при объявлении члена массива с переменными границами
CERT C: Rule DCL39-CИзбегайте утечки информации в дополнении структуры
CERT C: Rule DCL40-CНе создавайте несовместимые объявления той же функции или объекта
CERT C: Rule DCL41-CНе объявляйте переменные в операторе switch перед первой меткой случая
CERT C: Rule EXP30-CНе зависьте от порядка оценки для побочных эффектов
CERT C: Rule EXP32-CНе получайте доступ к энергозависимому объекту через энергонезависимую ссылку
CERT C: Rule EXP33-CНе читайте неинициализированную память
CERT C: Rule EXP34-CНе разыменовывайте нулевых указателей
CERT C: Rule EXP35-CНе изменяйте объекты с временным временем жизни
CERT C: Rule EXP36-CНе бросайте указатели в более строго выровненные типы указателей
CERT C: Rule EXP37-CВызовите функции с правильным номером и типом аргументов
CERT C: Rule EXP39-CНе получайте доступ к переменной через указатель несовместимого типа
CERT C: Rule EXP40-CНе изменяйте постоянные объекты
CERT C: Rule EXP42-CНе сравнивайте дополнительные данные
CERT C: Rule EXP43-CИзбегайте, чтобы неопределенное поведение при использовании ограничило - квалифицированные указатели
CERT C: Rule EXP44-CНе используйте побочные эффекты в операндах к sizeof, _Alignof, или _Generic
CERT C: Rule EXP45-CНе выполняйте присвоения в операторах выбора
CERT C: Rule EXP46-CНе используйте побитовый оператор с подобным boolean операндом
CERT C: Rule EXP47-CНе вызывайте va_arg с аргументом неправильного типа
CERT C: Rule INT30-CУбедитесь, что операции беззнаковых целых чисел не переносятся
CERT C: Rule INT31-CУбедитесь, что целочисленные преобразования не приводят к потерянным или неправильно истолкованным данным
CERT C: Rule INT32-CУбедитесь, что операции на целых числах со знаком не приводят к переполнению
CERT C: Rule INT33-CУбедитесь, что деление и операции остатка не приводят к ошибкам деления на нуль
CERT C: Rule INT34-CНе переключайте выражение отрицательным числом битов или большим, чем или равняйтесь количеству битов, которые существуют в операнде
CERT C: Rule INT35-CИспользуйте правильную целочисленную точность
CERT C: Rule INT36-CПреобразование указателя на целое число или целое число к указателю
CERT C: Rule FLP30-CНе используйте переменные с плавающей точкой в качестве счетчиков цикла
CERT C: Rule FLP32-CПредотвратите или обнаружьте область и ошибки области значений в математических функциях
CERT C: Rule FLP34-CУбедитесь, что преобразования с плавающей точкой в области значений нового типа
CERT C: Rule FLP36-CСохраните точность при преобразовании интегральных значений в тип с плавающей точкой
CERT C: Rule FLP37-CНе используйте объектные представления, чтобы сравнить значения с плавающей точкой
CERT C: Rule ARR30-CНе формируйте или используйте за пределы индексы массивов или указатели
CERT C: Rule ARR32-CГарантируйте, что аргументы размера для массивов переменной длины находятся в допустимой области значений
CERT C: Rule ARR36-CНе вычитайте или сравнивайте два указателя, которые не относятся к тому же массиву
CERT C: Rule ARR37-CНе добавляйте или вычитайте целое число к указателю на объект немассивов
CERT C: Rule ARR38-CГарантируйте, что библиотечные функции не формируют недопустимые указатели
CERT C: Rule ARR39-CНе добавляйте или вычитайте масштабированное целое число к указателю
CERT C: Rule STR30-CНе пытайтесь изменить строковые литералы
CERT C: Rule STR31-CГарантируйте, что устройство хранения данных для строк имеет достаточный пробел для символьных данных и пустого терминатора строки
CERT C: Rule STR32-CНе передавайте не пустую отключенную последовательность символов библиотечной функции, которая ожидает строку
CERT C: Rule STR34-CБросьте символы к char без знака прежде, чем преобразовать в большие целочисленные размеры
CERT C: Rule STR37-CАргументы к обрабатывающим символ функциям должны быть представимыми как char без знака
CERT C: Rule STR38-CНе путайте строки узкого и широкого символа и функции
CERT C: Rule MEM30-CНе получайте доступ освобожденный память
CERT C: Rule MEM31-CСвободная динамически выделенная память, когда больше не необходимый
CERT C: Rule MEM33-CВыделите и скопируйте структуры, содержащие член массива с переменными границами динамически
CERT C: Rule MEM34-CТолько свободная память, выделенная динамически
CERT C: Rule MEM35-CВыделите достаточную память для объекта
CERT C: Rule MEM36-CНе изменяйте выравнивание объектов путем вызова перевыделения ()
CERT C: Rule FIO30-CИсключите ввод данных пользователем из строк формата
CERT C: Rule FIO32-CНе выполняйте операции на устройствах, которые только подходят для файлов
CERT C: Rule FIO34-CРазличайте символы, считанные из файла и EOF или WEOF
CERT C: Rule FIO37-CНе принимайте, что fgets () или fgetws () возвращает непустую строку, когда успешный
CERT C: Rule FIO38-CНе копируйте объект FILE
CERT C: Rule FIO39-CНе делайте альтернативно ввода и вывода от потока без прошедшего сброса или располагающий вызов
CERT C: Rule FIO40-CСбросьте строки на fgets () или fgetws () отказ
CERT C: Rule FIO41-CНе вызывайте getc (), putc (), getwc (), или putwc () с потоковым аргументом, который имеет побочные эффекты
CERT C: Rule FIO42-CЗакройте файлы, когда они больше не будут необходимы
CERT C: Rule FIO44-CТолько используйте значения для fsetpos (), которые возвращены в fgetpos ()
CERT C: Rule FIO45-CИзбегайте условий состязания TOCTOU при доступе к файлам
CERT C: Rule FIO46-CНе получайте доступ к закрытому файлу
CERT C: Rule FIO47-CИспользуйте строки допустимого формата
CERT C: Rule ENV30-CНе изменяйте объект, на который ссылается возвращаемое значение определенных функций
CERT C: Rule ENV31-CНе используйте указатель среды после операции, которая может делать недействительным его
CERT C: Rule ENV32-CВсе выходные обработчики должны обычно возвращаться
CERT C: Rule ENV33-CНе вызывайте систему ()
CERT C: Rule ENV34-CНе храните указатели, возвращенные определенными функциями
CERT C: Rule SIG30-CВызовите только асинхронно-безопасные функции в обработчиках сигнала
CERT C: Rule SIG31-CНе получайте доступ к общим объектам в обработчиках сигнала
CERT C: Rule SIG34-CНе делайте позывного () из прерываемых обработчиков сигнала
CERT C: Rule SIG35-CНе возвращайтесь из вычислительного обработчика сигнала исключения
CERT C: Rule ERR30-CОбнулите errno прежде, чем вызвать библиотечную функцию, которая, как известно, установила errno и проверять errno только после того, как функция возвратит отказ указания значения
CERT C: Rule ERR32-CНе используйте неопределенные значения errno
CERT C: Rule ERR33-CОбнаружьте и обработайте стандартные ошибки библиотеки
CERT C: Rule ERR34-CОбнаружьте ошибки при преобразовании строки в номер
CERT C: Rule CON30-CОчистите специфичное для потока устройство хранения данных
CERT C: Rule CON31-CНе уничтожайте взаимное исключение, в то время как оно заблокировано
CERT C: Rule CON32-CПредотвратите гонки данных при доступе к битовым полям от нескольких потоков
CERT C: Rule CON33-CИзбегайте условий состязания при использовании библиотечных функций
CERT C: Rule CON34-CОбъявите объекты, совместно использованные потоками с соответствующими продолжительностями хранения
CERT C: Rule CON35-CИзбегайте мертвой блокировки путем привязки предопределенного порядка
CERT C: Rule CON36-CПеренесите функции, которые могут побочно проснуться в цикле
CERT C: Rule CON37-CНе делайте позывного () в многопоточной программе
CERT C: Rule CON38-CСохраните потокобезопасность и живучесть при использовании условных переменных
CERT C: Rule CON39-CНе соединяйте или отсоединяйте поток, к которому ранее соединили или отсоединили
CERT C: Rule CON40-CНе обращайтесь к атомарной переменной дважды в выражении
CERT C: Rule CON41-CПеренесите функции, которые могут перестать работать побочно в цикле
CERT C: Rule CON43-CНе позволяйте гонки данных в многопоточном коде
CERT C: Rule MSC30-CНе используйте rand () функция для генерации псевдослучайных чисел
CERT C: Rule MSC32-CПравильно отберите генераторы псевдослучайного числа
CERT C: Rule MSC33-CНе передавайте недопустимые данные asctime () функция
CERT C: Rule MSC37-CУбедитесь, что управление никогда не достигает конца непустой функции
CERT C: Rule MSC38-CНе обрабатывайте предопределенный идентификатор как объект, если это может только быть реализовано как макрос
CERT C: Rule MSC39-CНе вызывайте va_arg () на va_list, который имеет неопределенное значение
CERT C: Rule MSC40-CНе нарушайте ограничения
CERT C: Rule MSC41-CНикогда трудная кодозависимая информация
CERT C: Rule POS30-CИспользуйте readlink () функция правильно
CERT C: Rule POS34-CНе вызывайте putenv () с указателем на автоматическую переменную в качестве аргумента
CERT C: Rule POS35-CИзбегайте условий состязания при проверке на существование символьной ссылки
CERT C: Rule POS36-CНаблюдайте правильный порядок аннулирования при отказе от привилегий
CERT C: Rule POS37-CУбедитесь, что отказ привилегии успешен
CERT C: Rule POS38-CОстерегайтесь условий состязания при использовании ветвления и дескрипторов файлов
CERT C: Rule POS39-CИспользуйте правильный порядок байтов при передаче данных между системами
CERT C: Rule POS44-CНе используйте сигналы отключить потоки
CERT C: Rule POS47-CНе используйте потоки, которые могут быть отменены асинхронно
CERT C: Rule POS48-CНе разблокируйте или уничтожьте другое взаимное исключение потока POSIX
CERT C: Rule POS49-CКогда к данным должны получить доступ несколько потоков, обеспечьте взаимное исключение и гарантируйте, что ни к каким смежным данным также не получают доступ
CERT C: Rule POS50-CОбъявите объекты, совместно использованные потоками POSIX с соответствующими продолжительностями хранения
CERT C: Rule POS51-CИзбегайте мертвой блокировки с потоками POSIX путем привязки предопределенного порядка
CERT C: Rule POS52-CНе выполняйте операции, которые могут блокироваться при содержании блокировки POSIX
CERT C: Rule POS53-CНе используйте больше чем одно взаимное исключение для параллельных операций ожидания на условной переменной
CERT C: Rule POS54-CОбнаружьте и обработайте ошибки библиотеки POSIX
CERT C: Rule WIN30-CПравильно парные функции выделения и освобождения
CERT C: Rec. PRE00-CПредпочтите встроенные или статические функции подобным функции макросам
CERT C: Rec. PRE01-CИспользуйте круглые скобки в макросах вокруг названий параметра
CERT C: Rec. PRE06-CЗаключите заголовочные файлы в защиту включения
CERT C: Rec. PRE07-CИзбегайте использования повторенных вопросительных знаков
CERT C: Rec. PRE09-CНе заменяйте безопасные функции на или устаревающие функции устаревшие
CERT C: Rec. PRE10-CПеренесите составные макросы в цикл с условием продолжения
CERT C: Rec. PRE11-CНе завершайте макроопределения с точкой с запятой
CERT C: Rec. DCL00-CConst - квалифицирует неизменяемые объекты
CERT C: Rec. DCL01-CНе снова используйте имена переменных в подосциллографах
CERT C: Rec. DCL02-CИспользуйте визуально отличные идентификаторы
CERT C: Rec. DCL06-CИспользуйте значимые символьные константы, чтобы представлять литеральные значения
CERT C: Rec. DCL07-CВключайте соответствующую информацию о типе в функциональные операторы объявления
CERT C: Rec. DCL10-CОбеспечьте контракт между средством записи и вызывающей стороной функций variadic
CERT C: Rec. DCL11-CИзучите проблемы типа, сопоставленные с функциями variadic
CERT C: Rec. DCL12-CРеализуйте абстрактные типы данных с помощью непрозрачных типов
CERT C: Rec. DCL13-CОбъявите параметры функции, которые являются указателями на значения, не измененные функцией как const
CERT C: Rec. DCL15-CОбъявите объекты осциллографа файла или функции, для которых не нужно внешнее рычажное устройство как статическое
CERT C: Rec. DCL16-CИспользуйте 'L', не 'l', чтобы указать на долгое значение
CERT C: Rec. DCL18-CНе начинайте целочисленные константы с 0 при определении десятичного значения
CERT C: Rec. DCL19-CМинимизируйте осциллограф переменных и функций
CERT C: Rec. DCL22-CИспользуйте энергозависимый для данных, которые не могут кэшироваться
CERT C: Rec. DCL23-CГарантируйте, что взаимно видимые идентификаторы уникальны
CERT C: Rec. EXP00-CИспользуйте круглые скобки для приоритета операции
CERT C: Rec. EXP05-CНе выбрасывайте проверку const
CERT C: Rec. EXP08-CГарантируйте, что адресная арифметика с указателями используется правильно
CERT C: Rec. EXP09-CИспользуйте sizeof, чтобы определить размер типа или переменной
CERT C: Rec. EXP10-CНе зависьте от порядка оценки подвыражений или порядка, в котором происходят побочные эффекты
CERT C: Rec. EXP12-CНе игнорируйте значения, возвращенные функциями
CERT C: Rec. EXP13-CОбработайте операторы отношения и операторы равенства, как будто они были неассоциативны
CERT C: Rec. EXP15-CНе помещайте точку с запятой в ту же линию как если, поскольку, или в то время как оператор
CERT C: Rec. EXP19-CИспользуйте фигурные скобки для тела если, поскольку, или в то время как оператор
CERT C: Rec. INT00-CИзучите модель данных, используемую вашей реализацией (реализациями)
CERT C: Rec. INT02-CИзучите целочисленные правила преобразования
CERT C: Rec. INT04-CОсуществите пределы на целочисленных значениях, происходящих из испорченных источников
CERT C: Rec. INT07-CИспользуйте только явным образом подписанный или символьный тип без знака для числовых значений
CERT C: Rec. INT08-CПроверьте, что все целочисленные значения находятся в области значений
CERT C: Rec. INT09-CГарантируйте, что константы перечисления сопоставляют с уникальными значениями
CERT C: Rec. INT10-CНе принимайте положительный остаток при использовании оператора %
CERT C: Rec. INT12-CНе делайте предположения о типе простого международного битового поля, когда используется в выражении
CERT C: Rec. INT13-CИспользуйте побитовые операторы только на операндах без знака
CERT C: Rec. INT14-CПостарайтесь не выполнять битовые и арифметические операции на тех же данных
CERT C: Rec. INT18-CВыполните целые выражения в большем размере прежде, чем сравнить или присвоить тому размеру
CERT C: Rec. FLP00-CИзучите ограничения чисел с плавающей запятой
CERT C: Rec. FLP02-CИзбегайте использования чисел с плавающей запятой, когда точный расчет будет необходим
CERT C: Rec. FLP03-CОбнаружьте и обработайте ошибки с плавающей точкой
CERT C: Rec. FLP06-CПреобразуйте целые числа в плавающую точку для операций с плавающей точкой
CERT C: Rec. ARR01-CНе применяйте sizeof оператор к указателю при взятии размера массива
CERT C: Rec. ARR02-CЯвным образом задайте границы массивов, даже если неявно заданный инициализатором
CERT C: Rec. STR02-CСанируйте данные, переданные комплексным подсистемам
CERT C: Rec. STR03-CНепреднамеренно не обрезайте строку
CERT C: Rec. STR07-CИспользуйте проверяющие границы интерфейсы для обработки строк
CERT C: Rec. STR11-CНе задавайте связанный из символьного массива, инициализированного строковым литералом
CERT C: Rec. MEM00-CВыделите и освободите память в том же модуле на том же уровне абстракции
CERT C: Rec. MEM01-CСохраните новое значение в указателях сразу после свободный ()
CERT C: Rec. MEM02-CСразу бросьте результат вызова функции выделения памяти в указатель на выделенный тип
CERT C: Rec. MEM03-CОчистите уязвимую информацию, хранившую в допускающих повторное использование ресурсах
CERT C: Rec. MEM04-CОстерегайтесь выделений нулевой длины
CERT C: Rec. MEM05-CИзбегайте больших выделений стека
CERT C: Rec. MEM06-CУбедитесь, что уязвимые данные не выписаны к диску
CERT C: Rec. MEM11-CНе принимайте бесконечное пространство "кучи"
CERT C: Rec. MEM12-CРассмотрите использование goto цепи при отъезде функции при ошибке при использовании и высвобождении средств
CERT C: Rec. FIO02-CКанонизируйте пути, происходящие из испорченных источников
CERT C: Rec. FIO11-CЗаботьтесь при определении параметра режима fopen ()
CERT C: Rec. FIO21-CНе создавайте временные файлы в общих каталогах
CERT C: Rec. FIO24-CНе открывайте файл, который уже открыт
CERT C: Rec. ENV01-CНе делайте предположения о размере переменной окружения
CERT C: Rec. ERR00-CПримите и представьте сопоставимую и всестороннюю политику обработки ошибок
CERT C: Rec. API04-CОбеспечьте сопоставимый и применимый механизм проверки ошибок
CERT C: Rec. CON01-CПолучите и выпустите примитивы синхронизации в том же модуле на том же уровне абстракции
CERT C: Rec. CON05-CНе выполняйте операции, которые могут блокироваться при содержании блокировки
CERT C: Rec. MSC01-CБоритесь за логическую полноту
CERT C: Rec. MSC04-CИспользуйте комментарии последовательно и читаемым способом
CERT C: Rec. MSC12-CОбнаружьте и удалите код, который не оказывает влияния или никогда не выполняется
CERT C: Rec. MSC13-CОбнаружьте и удалите неиспользованные значения
CERT C: Rec. MSC15-CНе зависьте от неопределенного поведения
CERT C: Rec. MSC17-CЗакончите каждый набор операторов, сопоставленных с меткой случая с оператором завершения
CERT C: Rec. MSC18-CБудьте осторожны при обработке уязвимых данных, таких как пароли, в коде программы
CERT C: Rec. MSC20-CНе используйте оператор switch, чтобы передать управление в комплексный блок
CERT C: Rec. MSC21-CИспользуйте устойчивые условия выхода из цикла
CERT C: Rec. MSC22-CИспользуйте setjmp (), longjmp () средство надежно
CERT C: Rec. MSC24-CНе используйте удержанные от использования или устаревающие функции
CERT C: Rec. POS05-CОграничьте доступ к файлам путем создания тюрьмы
CERT C: Rec. WIN00-CБудьте конкретны при динамичной загрузке библиотек
Правила ISO/IEC TS 17961
ISO/IEC TS 17961 [accfree]Доступ освобожден память
ISO/IEC TS 17961 [accsig]Доступ к общим объектам в обработчиках сигнала
ISO/IEC TS 17961 [addrescape]Выход адреса автоматического объекта
ISO/IEC TS 17961 [alignconv]Преобразование значений указателя к более строго выровненным типам указателей
ISO/IEC TS 17961 [argcomp]Вызывание функций с неправильными аргументами
ISO/IEC TS 17961 [asyncsig]Вызывая функции в Стандартной Библиотеке C кроме аварийного прекращения работы, _Exit, и сигнал из обработчика сигнала
ISO/IEC TS 17961 [boolasgn]Никакое присвоение в условных выражениях
ISO/IEC TS 17961 [chreof]Используя символьные значения, которые неотличимы от EOF
ISO/IEC TS 17961 [chrsgnext]Передающие аргументы к функциям обработки символа, которые не являются представимыми как char без знака
ISO/IEC TS 17961 [dblfree]Освобождение памяти многократно
ISO/IEC TS 17961 [diverr]Ошибки целочисленного деления
ISO/IEC TS 17961 [fileclose]Сбой закрыть файлы или свободную динамическую память, когда они больше не необходимы
ISO/IEC TS 17961 [filecpy]Копирование объекта FILE
ISO/IEC TS 17961 [funcdecl]Объявление той же функции или объекта несовместимыми способами
ISO/IEC TS 17961 [insufmem]Выделение недостаточно памяти
ISO/IEC TS 17961 [intoflow]Переполнение целых чисел со знаком
ISO/IEC TS 17961 [intptrconv]Преобразование указателя на целое число или целое число к указателю
ISO/IEC TS 17961 [inverrno]Установка Incorrectly и использующий errno
ISO/IEC TS 17961 [invfmtstr]Используя строки недопустимого формата
ISO/IEC TS 17961 [invptr]Формирование или использование за пределы указателей или индексов массивов
ISO/IEC TS 17961 [ioileave]Перемежение потоковых вводов и выходных параметров без сброса или расположение вызова
ISO/IEC TS 17961 [liberr]Сбой обнаружить и обработать стандартные ошибки библиотеки
ISO/IEC TS 17961 [libmod]Изменяя строку, возвращенную getenv, localeconv, setlocale, и strerror
ISO/IEC TS 17961 [libptr]Формирование недопустимых указателей библиотечной функцией
ISO/IEC TS 17961 [libuse]Используя объект, перезаписанный getenv, localeconv, setlocale, и strerror
ISO/IEC TS 17961 [nonnullcs]Передача не пустой отключенной последовательности символов к библиотечной функции
ISO/IEC TS 17961 [nullref]Разыменование указателя вне основной области
ISO/IEC TS 17961 [padcomp]Сравнение дополнения данных
ISO/IEC TS 17961 [ptrcomp]Доступ к объекту через указатель на несовместимый тип
ISO/IEC TS 17961 [ptrobj]Вычитание или сравнение двух указателей, которые не относятся к тому же массиву
ISO/IEC TS 17961 [resident]Используя идентификаторы, которые резервируются для реализации
ISO/IEC TS 17961 [restrict]Передающие указатели в тот же объект в качестве аргументов к различному ограничивают - квалифицированные параметры
ISO/IEC TS 17961 [sigcall]Вызов сигнала от прерываемых обработчиков сигнала
ISO/IEC TS 17961 [signconv]Преобразование символов со знаком к более широким целочисленным типам перед проверкой на EOF
ISO/IEC TS 17961 [sizeofptr]Взятие размера указателя, чтобы определить размер указанного тип
ISO/IEC TS 17961 [strmod]Изменение строковых литералов
ISO/IEC TS 17961 [swtchdflt]Использование подразумеваемого значения по умолчанию в операторе switch
ISO/IEC TS 17961 [syscall]Вызов системы
ISO/IEC TS 17961 [taintformatio]Используя испорченное значение, чтобы записать в объект с помощью отформатированной функции ввода или вывода
ISO/IEC TS 17961 [taintnoproto]Используя испорченное значение в качестве аргумента к несмоделированному указателю функции
ISO/IEC TS 17961 [taintsink]Испорченный, потенциально искалеченные, или целочисленные значения вне основной области используются в ограниченном приемнике
ISO/IEC TS 17961 [taintstrcpy]Испорченные строки передаются функции копирования строки
ISO/IEC TS 17961 [uninitref]Ссылка деинициализировала память
ISO/IEC TS 17961 [usrfmt]Включая испорченный или вход вне основной области в строке формата
ISO/IEC TS 17961 [xfilepos]Используя значение для fsetpos кроме значения, возвращенного от fgetpos
ISO/IEC TS 17961 [xfree]Перераспределение или освобождение памяти, которая не была динамически выделена
MISRA C ++:2008 правил
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-1Trigraphs не должен использоваться
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Разделы кода не должны быть то, " закомментировал" использование комментариев в стиле С++
MISRA C++:2008 Rule 2-10-1Различные идентификаторы должны быть типографским способом однозначными
MISRA C++:2008 Rule 2-10-2Идентификаторы, объявленные во внутреннем осциллографе, не должны скрывать идентификатор, объявленный во внешнем осциллографе
MISRA C++:2008 Rule 2-10-3Имя определения типа (включая проверку, если таковые имеются) должно быть уникальным идентификатором
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Только те escape-последовательности, которые заданы в ISO/IEC 14882:2003, должны использоваться
MISRA C++:2008 Rule 2-13-2Восьмеричные константы (кроме нуля) и восьмеричные escape-последовательности (кроме "\0") не должны использоваться
MISRA C++:2008 Rule 2-13-3Суффикс "U" должен быть применен ко всем восьмеричным или шестнадцатеричным целочисленным литералам типа без знака
MISRA C++:2008 Rule 2-13-4Литеральные суффиксы должны быть верхним регистром
MISRA C++:2008 Rule 2-13-5Узкие и широкие строковые литералы не должны быть конкатенированы
MISRA C++:2008 Rule 3-1-1Должно быть возможно включать любой заголовочный файл в несколько модулей перевода, не нарушая Одно Правило Определения
MISRA C++:2008 Rule 3-1-2Функции не должны быть объявлены в области действия блока
MISRA C++:2008 Rule 3-1-3Когда массив будет объявлен, его размер должен или быть утвержден явным образом или задан неявно инициализацией
MISRA C++:2008 Rule 3-2-1Все объявления объекта или функции должны иметь совместимые типы
MISRA C++:2008 Rule 3-2-2Одно Правило Определения не должно быть нарушено
MISRA C++:2008 Rule 3-2-3Тип, объект или функция, которая используется в нескольких модулях перевода, должны быть объявлены в одном и только одном файле
MISRA C++:2008 Rule 3-2-4Идентификатор с внешним рычажным устройством должен иметь точно одно определение
MISRA C++:2008 Rule 3-3-1Объекты или функции с внешним рычажным устройством должны быть объявлены в заголовочном файле
MISRA C++:2008 Rule 3-3-2Если функция будет иметь внутреннее рычажное устройство затем, то все переобъявления должны включать статический спецификатор класса памяти
MISRA C++:2008 Rule 3-4-1Идентификатор, который, как объявляют, был объектом или типом, должен быть задан в блоке, который минимизирует его видимость
MISRA C++:2008 Rule 3-9-1Типы, используемые для объекта, функционального типа возврата или параметра функции, должны быть лексемой для лексемы, идентичной во всех объявлениях и переобъявлениях
MISRA C++:2008 Rule 3-9-2определения типов, которые указывают на размер и со знаком, должны использоваться вместо основных числовых типов
MISRA C++:2008 Rule 3-9-3Базовые битные представления значений с плавающей точкой не должны использоваться
MISRA C++:2008 Rule 4-5-1Выражения с типом bool не должны использоваться в качестве операндов к встроенным операторам кроме оператора присваивания =, логические операторы &&, ||!, операторы равенства == и! =, унарное & оператор и условный оператор
MISRA C++:2008 Rule 4-5-2Выражения с перечислением типа не должны использоваться в качестве операндов к созданному - в операторах кроме оператора индекса [], оператор присваивания =, операторы равенства == и! =, унарное & оператор и операторы отношения <<=>,> =
MISRA C++:2008 Rule 4-5-3Выражения с типом (простой) char и wchar_t не должны использоваться в качестве операндов к встроенным операторам кроме оператора присваивания =, операторы равенства == и! =, и унарное & оператор N
MISRA C++:2008 Rule 4-10-1NULL не должен использоваться в качестве целочисленного значения
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-3cvalue выражение не должно быть неявно преобразовано в различный базовый тип
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Если побитовые операторы ~ и <<будут применены к операнду с базовым типом символьного или короткого целого без знака без знака, результат должен быть сразу брошен к базовому типу операнда
MISRA C++:2008 Rule 5-0-11Простой символьный тип должен только использоваться для устройства хранения данных и использования символьных значений
MISRA C++:2008 Rule 5-0-12Символ со знаком и символьный тип без знака должны только использоваться для устройства хранения данных и использования числовых значений
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Бросок не должен удалять const или энергозависимую проверку от типа указателя или ссылки
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Оценка операнда к sizeof оператору не должна содержать побочные эффекты
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Перед предварительной обработкой пустой оператор должен только произойти на линии отдельно; это может сопровождаться комментарием, при условии, что первый символ после пустого оператора является белым - пробел
MISRA C++:2008 Rule 6-3-1Оператор, формирующий тело переключателя, в то время как, делает, в то время как или для оператора будет составной оператор
MISRA C++:2008 Rule 6-4-1Если (условие) создают, еще буду сопровождаться составным оператором, ключевое слово должно сопровождаться или составным оператором или другим оператором if
MISRA C++:2008 Rule 6-4-2Все, если еще, если построения должны быть отключены с выражением else
MISRA C++:2008 Rule 6-4-3Оператор switch должен быть правильно построенным оператором switch
MISRA C++:2008 Rule 6-4-4Метка переключателя должна только использоваться, когда наиболее тесно заключающий составной оператор будет телом оператора 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 должен иметь по крайней мере один пункт случая
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Контрольная переменная цикла кроме счетчика цикла, который изменяется в операторе, должна иметь тип bool
MISRA C++:2008 Rule 6-6-1Любая метка, на которую ссылается оператор перехода, должна быть объявлена в том же блоке, или в блоке, заключающем оператор перехода
MISRA C++:2008 Rule 6-6-2Оператор перехода должен перейти к метке, объявленной позже в том же теле функции
MISRA C++:2008 Rule 6-6-3Оператор continue должен только использоваться в правильно построенном цикле for
MISRA C++:2008 Rule 6-6-4Для любого оператора цикла должен быть не больше, чем один оператор завершения, или оператор перехода использовал завершение цикла for
MISRA C++:2008 Rule 6-6-5Функция должна иметь одну точку выхода в конце функции
MISRA C++:2008 Rule 7-1-1Переменная, которая не изменяется, должна быть квалифицированным const
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директивы использования не должны использоваться
MISRA C++:2008 Rule 7-3-5Многократные объявления для идентификатора в том же пространстве имен не должны колебаться между объявлением использования для того идентификатора
MISRA C++:2008 Rule 7-3-6директивы использования и объявления использования (исключая осциллограф класса или функциональные объявления использования осциллографа) не должны использоваться в заголовочных файлах
MISRA C++:2008 Rule 7-4-2Ассемблерные инструкции должны только быть введены с помощью asm объявления
MISRA C++:2008 Rule 7-4-3Ассемблер должен инкапсулироваться и изолироваться
MISRA C++:2008 Rule 7-5-1Функция не должна возвращать ссылку или указатель на автоматическую переменную (включая параметры), заданный в функции
MISRA C++:2008 Rule 7-5-2Адрес объекта с автоматическим хранением не должен быть присвоен другому объекту, который может сохраниться после того, как первый объект прекратил существование
MISRA C++:2008 Rule 7-5-3Функция не должна возвращать ссылку или указатель на параметр, который передается ссылкой const или ссылкой
MISRA C++:2008 Rule 7-5-4Функции не должны вызывать себя, ни один прямо или косвенно
MISRA C++:2008 Rule 8-0-1Init-declarator-list или список оператора объявления члена должны состоять из одного init-оператора-объявления или оператора объявления члена соответственно
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 не должны возвращать указатели неconst или ссылки на данные класса
MISRA C++:2008 Rule 9-3-2Функции членства не должны возвращать указатели неconst на данные класса
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В шаблоне класса с зависимой основой любое имя, которое может быть найдено в той зависимой основе, должно быть отнесено в использование квалифицированного ID или этого->
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Управление не должно быть передано в попытку или блок выгоды с помощью goto или оператора switch
MISRA C++:2008 Rule 15-1-1Выражение присваивания оператора броска не должно самостоятельно заставлять исключение быть выданным
MISRA C++:2008 Rule 15-1-2NULL не должен быть выдан явным образом
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Обработчики реализации функционального блока попытки конструктора класса или деструктора не должны ссылаться на нестатические члены от этого класса или его основ
MISRA C++:2008 Rule 15-3-4Каждое исключение, явным образом добавленное, код должен иметь обработчик совместимого типа во всех путях к вызову, которые могли привести к той точке
MISRA C++:2008 Rule 15-3-5Исключение типа класса должно всегда отлавливаться ссылкой
MISRA C++:2008 Rule 15-3-6Где несколько обработчиков обеспечиваются в одном операторе try-catch или функциональном блоке попытки для производного класса, и некоторые или все его основы, обработчики должны быть упорядочены наиболее выведенные базовому классу
MISRA C++:2008 Rule 15-3-7Где несколько обработчиков обеспечиваются в одном операторе try-catch или функциональном блоке попытки, любой замещающий знак (вместилище), обработчик должен произойти в последний раз
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Оконечное () функция не должно быть названо неявно
MISRA C++:2008 Rule 16-0-1Директивам #include в файле должны только предшествовать другие директивы препроцессору или комментарии
MISRA C++:2008 Rule 16-0-2Макросы должны только быть #define 'd или #undef 'd в глобальном пространстве имен
MISRA C++:2008 Rule 16-0-3#undef не должен использоваться
MISRA C++:2008 Rule 16-0-4Подобные функции макросы не должны быть заданы
MISRA C++:2008 Rule 16-0-5Аргументы к подобному функции макросу не должны содержать лексемы, которые похожи на предварительную обработку директив
MISRA C++:2008 Rule 16-0-6В определении подобного функции макроса каждый экземпляр параметра должен быть заключен в круглые скобки, если это не будет использоваться в качестве операнда # или ##
MISRA C++:2008 Rule 16-0-7Неопределенные макро-идентификаторы не должны использоваться в #if или #elif директивах препроцессору, за исключением операндов к заданному оператору
MISRA C++:2008 Rule 16-0-8Если # лексема появится как первая лексема на линии, то это должно сразу сопровождаться лексемой предварительной обработки
MISRA C++:2008 Rule 16-1-1Заданный оператор препроцессора должен только использоваться в одной из двух стандартных форм
MISRA C++:2008 Rule 16-1-2Весь #else, #elif и #endif директивы препроцессору должен находиться в том же файле как #if или #ifdef директива, с которой они связаны
MISRA C++:2008 Rule 16-2-1Препроцессор должен только использоваться для включения файла и включать защиту
MISRA C++:2008 Rule 16-2-2Макросы C++ должны только использоваться для: включайте защиту, введите спецификаторы или спецификаторы класса памяти
MISRA C++:2008 Rule 16-2-3Включайте защиту, буду обеспечен
MISRA C++:2008 Rule 16-2-4', ",/* или//символы не должны происходить на имя заголовочного файла
MISRA C++:2008 Rule 16-2-5\символ не должен происходить на имя заголовочного файла
MISRA C++:2008 Rule 16-2-6#include директива должна сопровождаться или <имя файла> или последовательность "имени файла"
MISRA C++:2008 Rule 16-3-1Должно быть самое большее одно вхождение # или ## операторов в одном макроопределении
MISRA C++:2008 Rule 16-3-2# и ## операторы не должны использоваться
MISRA C++:2008 Rule 16-6-1Все использование #pragma директивы должно быть зарегистрировано
MISRA C++:2008 Rule 17-0-1Зарезервированные идентификаторы, макросы и функции в Стандартной Библиотеке не должны быть заданы, переопределены или не определены
MISRA C++:2008 Rule 17-0-2Имена стандартных макросов библиотеки и объектов не должны быть снова использованы
MISRA C++:2008 Rule 17-0-3Имена стандартных библиотечных функций не должны быть заменены
MISRA C++:2008 Rule 17-0-5setjmp макрос и функция longjmp не должны использоваться
MISRA C++:2008 Rule 18-0-1Библиотекой C нельзя пользоваться
MISRA C++:2008 Rule 18-0-2Библиотечные функции atof, atoi и атолл от библиотеки <cstdlib> не должны использоваться
MISRA C++:2008 Rule 18-0-3Аварийное прекращение работы библиотечных функций, выход, getenv и система от библиотеки <cstdlib> не должны использоваться
MISRA C++:2008 Rule 18-0-4Функции обработки времени библиотеки <ctime> не должны использоваться
MISRA C++:2008 Rule 18-0-5Неограниченные функции библиотеки <cstring> не должны использоваться
MISRA C++:2008 Rule 18-2-1Макрос offsetof не должен использоваться
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> не должен использоваться
AUTOSAR C++ 14 правил
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-1Trigraphs не должен использоваться
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Только те escape-последовательности, которые заданы в ISO/IEC 14882:2014, должны использоваться
AUTOSAR C++14 Rule A2-13-2Строковые литералы с различными префиксами кодирования не должны быть конкатенированы
AUTOSAR C++14 Rule A2-13-3wchar_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Восьмеричные константы (кроме нуля) и восьмеричные 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Типы, используемые для объекта, функционального типа возврата или параметра функции, должны быть лексемой для лексемы, идентичной во всех объявлениях и переобъявлениях
AUTOSAR C++14 Rule M3-9-3Базовые битные представления значений с плавающей точкой не должны использоваться
AUTOSAR C++14 Rule A4-5-1Выражения с классом Enum типа или классом Enum не должны использоваться в качестве операндов к встроенным и перегруженным операторам кроме оператора индекса [], оператор присваивания =, операторы равенства == и! =, унарное & оператор и операторы отношения <<=>,> =
AUTOSAR C++14 Rule A4-7-1Целое выражение не должно приводить к потере данных
AUTOSAR C++14 Rule A4-10-1Только литерал 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-1NULL не должен использоваться в качестве целочисленного значения
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-7Lambda не должен быть операндом к decltype или идентификатору типа
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Традиционные броски C-стиля не должны использоваться
AUTOSAR C++14 Rule A5-2-3Бросок не должен удалять const или энергозависимую проверку от типа указателя или ссылки
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-3cvalue выражение не должно быть неявно преобразовано в различный базовый тип
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Если побитовые операторы ~and <<будут применены к операнду с базовым типом символьного или короткого целого без знака без знака, результат должен быть сразу брошен к базовому типу операнда
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Объект с целочисленным типом или указателем, чтобы освободить тип не должен быть преобразован в объект с типом указателя
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Оценка операнда к sizeof оператору не должна содержать побочные эффекты
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Сделайте операторы не должны использоваться
AUTOSAR C++14 Rule A6-5-4For-init-statement и выражение не должны выполнять действия кроме инициализации счетчика цикла и модификации
AUTOSAR C++14 Rule A6-6-1Оператор перехода не должен использоваться
AUTOSAR C++14 Rule M6-2-1Операторы присваивания не должны использоваться в подвыражениях
AUTOSAR C++14 Rule M6-2-2Выражения с плавающей точкой не должны быть прямо или косвенно протестированы на равенство или неравенство
AUTOSAR C++14 Rule M6-2-3Перед предварительной обработкой пустой оператор должен только произойти на линии отдельно; это может сопровождаться комментарием, при условии, что первый символ после пустого оператора является пробельным символом
AUTOSAR C++14 Rule M6-3-1Оператор, формирующий тело переключателя, в то время как, делает..., в то время как или для оператора будет составной оператор
AUTOSAR C++14 Rule M6-4-1Если (условие) создают, буду сопровождаться составным оператором. Еще ключевое слово должно сопровождаться или составным оператором или другим оператором 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
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Контрольная переменная цикла кроме счетчика цикла, который изменяется в операторе, должна иметь тип bool
AUTOSAR C++14 Rule M6-6-1Любая метка, на которую ссылается оператор перехода, должна быть объявлена в том же блоке, или в блоке, заключающем оператор перехода
AUTOSAR C++14 Rule M6-6-2Оператор перехода должен перейти к метке, объявленной позже в том же теле функции
AUTOSAR C++14 Rule M6-6-3Оператор continue должен только использоваться в правильно построенном цикле for
AUTOSAR C++14 Rule A7-1-1Constexpr или спецификаторы const должны использоваться для неизменяемого объявления данных
AUTOSAR C++14 Rule A7-1-2constexpr спецификатор должен использоваться для значений, которые могут быть определены во время компиляции
AUTOSAR C++14 Rule A7-1-3Спецификаторы CV должны быть помещены на правой стороне типа, который является определением типа или именем использования
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Спецификатор определения типа не должен использоваться
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Перечисления должны быть объявлены как ограниченные по объему классы Enum
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-6Директивы Использования и объявления использования (исключая осциллограф класса или функциональные объявления использования осциллографа) не должны использоваться в заголовочных файлах
AUTOSAR C++14 Rule A7-4-1asm объявление не должно использоваться
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-3Распространенные способы передать параметры должны использоваться.
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"в" параметрах для "дешевого, чтобы скопировать" типы буду передан значением
AUTOSAR C++14 Rule A8-4-8Выходные параметры не должны использоваться
AUTOSAR C++14 Rule A8-4-9"в -" параметры, объявленные как 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Если класс имеет объявленного пользователями конструктора, который берет параметр станд. типа:: initializer_list, затем это должен быть единственный конструктор кроме специальных конструкторов функции членства
AUTOSAR C++14 Rule A8-5-3Переменная автоматического типа не должна быть инициализирована с помощью {} или = {} закрепленная инициализация
AUTOSAR C++14 Rule M8-0-1Init-declarator-list или список оператора объявления члена должны состоять из одного init-оператора-объявления или оператора объявления члена соответственно
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 не должны возвращать указатели не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 A10-4-1Иерархии должны быть основаны на интерфейсных классах
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-3Если все пользовательские конструкторы класса инициализируют элементы данных постоянными значениями, которые являются тем же самым через всех конструкторов, то элементы данных должны быть инициализированы с помощью NSDMI вместо этого
AUTOSAR C++14 Rule A12-1-4Все конструкторы, которые являются вызываемыми с отдельным аргументом фундаментального типа, должны быть объявлены явные
AUTOSAR C++14 Rule A12-1-5Общая инициализация класса для непостоянных членов должна быть сделана конструктором делегирования
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-7-1Если поведение пользовательской специальной функции членства будет идентично неявно заданной специальной функции членства, то это должно быть задано "=default" или оставлено неопределенным
AUTOSAR C++14 Rule A12-8-1Переместите и скопируйте конструкторов, перемещу и соответственно скопирую базовые классы и элементы данных класса, без любых побочных эффектов
AUTOSAR C++14 Rule A12-8-2Пользовательская копия и операторы присваивания перемещения должны использовать пользовательскую функцию подкачки без бросков
AUTOSAR C++14 Rule A12-8-3Перемещенный - от объекта не буду получен доступ чтением
AUTOSAR C++14 Rule A12-8-4Переместитесь конструктор не должен инициализировать его члены класса и базовые классы с помощью семантики копии
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-2Оператор двоичной арифметики и побитовый оператор должны возвратить "prvalue"
AUTOSAR C++14 Rule A13-2-3Оператор отношения должен возвратить булево значение
AUTOSAR C++14 Rule A13-3-1Функция, которая содержит "передающую ссылку" в качестве ее аргумента, не должна быть перегружена
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-1-1Шаблон должен проверять, подходит ли определенный аргумент шаблона для этого шаблона
AUTOSAR C++14 Rule A14-5-1Конструктор шаблона не должен участвовать в разрешении перегрузки для отдельного аргумента типа класса включения
AUTOSAR C++14 Rule A14-5-2Члены класса, которые не зависят от параметров шаблонного класса, должны быть заданы в отдельном базовом классе
AUTOSAR C++14 Rule A14-5-3Типовой оператор лица, не являющегося членом какой-либо организации, должен только быть объявлен в пространстве имен, которое не содержит класс (struct) тип, перечислимый тип или описания типа объединения
AUTOSAR C++14 Rule A14-7-1Тип, используемый в качестве аргумента шаблона, должен предоставить всем членам, которые используются шаблоном
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В шаблоне класса с зависимой основой любое имя, которое может быть найдено в той зависимой основе, должно быть отнесено в использование квалифицированного ID или этого->
AUTOSAR C++14 Rule A15-1-1Только экземпляры типов вывели из станд.:: исключение должно быть выдано
AUTOSAR C++14 Rule A15-1-2Объект исключения не должен быть указателем
AUTOSAR C++14 Rule A15-1-3Все вызванные исключительные ситуации должны быть уникальными
AUTOSAR C++14 Rule A15-1-4Если функция выйдет за исключением, то перед броском, функция должна поместить все объекты/ресурсы, которые функция создала в допустимых состояниях, или это должно удалить их.
AUTOSAR C++14 Rule A15-2-1Конструкторы, которые не являются noexcept, не должны быть вызваны перед запуском программы
AUTOSAR C++14 Rule A15-2-2Если конструктор не будет noexcept, и конструктор не может закончить объектную инициализацию, то это должно освободить ресурсы объекта, и это должно выдать исключение
AUTOSAR C++14 Rule A15-3-3Основная функция и задача основная функция должны отловить, по крайней мере: исключения базового класса из всех сторонних библиотек использовали, станд.:: исключение и все в противном случае необработанные исключения
AUTOSAR C++14 Rule A15-3-4Вместилище (замещающий знак и станд.:: исключение), обработчики должны использоваться только в (a) основном, (b) задаче основные функции, (c) в функциях, которые, как предполагается, изолируют независимые компоненты и (d) при вызове стороннего кода, который использует исключения не согласно C++ AUTOSAR 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 (<истинное условие>), то это не должно выходить за исключением
AUTOSAR C++14 Rule A15-4-3noexcept спецификация функции должна или быть идентичной через все модули перевода, или идентичной или более строгой между виртуальной функцией членства и сверхнаездником
AUTOSAR C++14 Rule A15-4-4Объявление неброска функции должно содержать noexcept спецификацию
AUTOSAR C++14 Rule A15-4-5Контролируемые исключительные ситуации, которые могли быть выданы от функции, должны быть заданы вместе с объявлением функции, и они должны быть идентичными во всех объявлениях функции и для всех его сверхнаездников
AUTOSAR C++14 Rule A15-5-1Все обеспеченные пользователями деструкторы класса, функции освобождения, перемещают конструкторов, перемещают операторы присваивания и подкачивают функции, не выйду за исключением. noexcept спецификация исключения должна быть добавлена к этим функциям как соответствующая
AUTOSAR C++14 Rule A15-5-2Программа не должна быть резко отключена. В частности, неявный или явный вызов станд.:: аварийное прекращение работы (), станд.:: quick_exit (), станд.:: _Exit (), станд.:: оконечный () не буду сделан
AUTOSAR C++14 Rule A15-5-3Станд.:: оконечный () функция не должна быть вызвана неявно
AUTOSAR C++14 Rule M15-0-3Управление не должно быть передано в попытку или блок выгоды с помощью goto или оператора switch
AUTOSAR C++14 Rule M15-1-1Выражение присваивания оператора броска не должно самостоятельно заставлять исключение быть выданным
AUTOSAR C++14 Rule M15-1-2NULL не должен быть выдан явным образом
AUTOSAR C++14 Rule M15-1-3Пустой бросок (бросок;) буду только использоваться в составном операторе обработчика выгоды
AUTOSAR C++14 Rule M15-3-1Исключения должны быть повышены только после запуска и перед завершением
AUTOSAR C++14 Rule M15-3-3Обработчики реализации функционального блока попытки конструктора класса или деструктора не должны ссылаться на нестатические члены от этого класса или его основ
AUTOSAR C++14 Rule M15-3-4Каждое исключение, явным образом добавленное, код должен иметь обработчик совместимого типа во всех путях к вызову, которые могли привести к той точке
AUTOSAR C++14 Rule M15-3-6Где несколько обработчиков обеспечиваются в одном операторе try-catch или функциональном блоке попытки для производного класса, и некоторые или все его основы, обработчики должны быть упорядочены наиболее выведенные базовому классу
AUTOSAR C++14 Rule M15-3-7Где несколько обработчиков обеспечиваются в одном операторе try-catch или функциональном блоке попытки, любой замещающий знак (вместилище), обработчик должен произойти в последний раз
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 в файле должны только предшествовать другие директивы препроцессору или комментарии
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Весь #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-5setjmp макрос и функция 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Станд.:: вектор <bool> специализация не должен использоваться
AUTOSAR C++14 Rule A18-1-3Станд.:: auto_ptr не должен использоваться
AUTOSAR C++14 Rule A18-1-6Весь станд.:: специализации хеша для пользовательских типов должны иметь noexcept оператор вызова функции
AUTOSAR C++14 Rule A18-5-1Функции malloc, calloc, перевыделение и свободный не должны использоваться
AUTOSAR C++14 Rule A18-5-2Новое неразмещение или удаляет выражения, не буду использоваться
AUTOSAR C++14 Rule A18-5-3Форма оператора delete должна соответствовать, форма нового оператора раньше выделяла память
AUTOSAR C++14 Rule A18-5-4Если проект измерил, или неразмерная версия оператора 'удаляют' глобально заданный, то и измеренные и неразмерные версии должны быть заданы
AUTOSAR C++14 Rule A18-5-5Функции управления памятью должны гарантировать следующее: (a) детерминированное поведение, заканчивающееся с существованием времени выполнения худшего случая, (b) предотвращение фрагментации памяти, (c) постарайтесь не заканчиваться память, (d) предотвращение несовпадающих выделений или освобождения, (e) никакая зависимость от недетерминированных вызовов ядра
AUTOSAR C++14 Rule A18-5-8Объекты, которые не переживают функцию, должны иметь длительность автоматического хранения
AUTOSAR C++14 Rule A18-5-9Пользовательские реализации функций динамического выделения памяти и освобождения должны удовлетворить семантические требования, заданные в соответствующем "Необходимом поведении" пункт из Стандарта C++
AUTOSAR C++14 Rule A18-5-10Новое размещение должно использоваться только с правильно выровненными указателями на достаточную емкость памяти
AUTOSAR C++14 Rule A18-5-11"оператор, который удаляет новый" и "оператор", должен быть задан вместе
AUTOSAR C++14 Rule A18-9-1Станд.:: свяжите не буду использоваться
AUTOSAR C++14 Rule A18-9-2Передача значений к другим функциям должна быть сделана через: (1) станд.:: переместитесь, если значение является rvalue ссылкой, (2) станд::, если значение передает ссылку
AUTOSAR C++14 Rule A18-9-3Станд.:: перемещение не должно использоваться на объектах, объявил const или const&
AUTOSAR C++14 Rule A18-9-4Аргумент к станд.:: вперед не буду впоследствии использоваться
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Макрос offsetof не должен использоваться
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Станд.:: unique_ptr должен использоваться, чтобы представлять исключительное владение
AUTOSAR C++14 Rule A20-8-3Станд.:: shared_ptr должен использоваться, чтобы представлять совместно использованное владение
AUTOSAR C++14 Rule A20-8-5станд:: должен использоваться, чтобы создать объекты, принадлежавшие станд.:: unique_ptr
AUTOSAR C++14 Rule A20-8-6станд:: должен использоваться, чтобы создать объекты, принадлежавшие станд.:: 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Псевдослучайные числа не должны быть сгенерированы с помощью станд.:: rand
AUTOSAR C++14 Rule A26-5-2Механизмы случайных чисел не должны быть инициализированы значением по умолчанию
AUTOSAR C++14 Rule A27-0-1Входные параметры от независимых компонентов должны быть подтверждены.
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> не должен использоваться
CERT правила C++
CERT C++: DCL30-CОбъявите объекты с соответствующими продолжительностями хранения
CERT C++: DCL39-CИзбегайте утечки информации в дополнении структуры
CERT C++: DCL40-CНе создавайте несовместимые объявления той же функции или объекта
CERT C++: DCL50-CPPНе задавайте C-стиль variadic функция
CERT C++: DCL51-CPPНе объявляйте или задавайте зарезервированный идентификатор
CERT C++: DCL52-CPPНикогда не квалифицируйте ссылочный тип с const или энергозависимый
CERT C++: DCL53-CPPНе пишите синтаксически неоднозначные объявления
CERT C++: DCL54-CPPВыделение перегрузки и освобождение функционируют как пару в том же осциллографе
CERT C++: DCL57-CPPНе позволяйте исключениям сбежать из деструкторов или функций освобождения
CERT C++: DCL58-CPPНе изменяйте стандартные пространства имен
CERT C++: DCL59-CPPНе задавайте пространство имен без имени в заголовочном файле
CERT C++: DCL60-CPPСоблюдите правило с одним определением
CERT C++: EXP34-CНе разыменовывайте нулевых указателей
CERT C++: EXP35-CНе изменяйте объекты с временным временем жизни
CERT C++: EXP36-CНе бросайте указатели в более строго выровненные типы указателей
CERT C++: EXP37-CВызовите функции с правильным номером и типом аргументов
CERT C++: EXP39-CНе получайте доступ к переменной через указатель несовместимого типа
CERT C++: EXP42-CНе сравнивайте дополнительные данные
CERT C++: EXP45-CНе выполняйте присвоения в операторах выбора
CERT C++: EXP46-CНе используйте побитовый оператор с подобным boolean операндом
CERT C++: EXP47-CНе вызывайте va_arg с аргументом неправильного типа
CERT C++: EXP50-CPPНе зависьте от порядка оценки для побочных эффектов
CERT C++: EXP52-CPPНе используйте побочные эффекты в неоцененных операндах
CERT C++: EXP53-CPPНе читайте неинициализированную память
CERT C++: EXP54-CPPНе получайте доступ к объекту за пределами его времени жизни
CERT C++: EXP55-CPPНе получайте доступ к квалифицированному к cv объекту через дисквалифицированный cv тип
CERT C++: EXP57-CPPНе бросайте или удаляйте указатели на неполные классы
CERT C++: EXP58-CPPПередайте объект правильного типа к va_start
CERT C++: EXP59-CPPИспользуйте offsetof () на допустимых типах и членах
CERT C++: EXP61-CPPОбъект lambda не должен переживать ни один из полученных объектов своей ссылки
CERT C++: EXP63-CPPНе используйте значение перемещенного - от объекта
CERT C++: INT30-CУбедитесь, что операции беззнаковых целых чисел не переносятся
CERT C++: INT31-CУбедитесь, что целочисленные преобразования не приводят к потерянным или неправильно истолкованным данным
CERT C++: INT32-CУбедитесь, что операции на целых числах со знаком не приводят к переполнению
CERT C++: INT33-CУбедитесь, что деление и операции остатка не приводят к ошибкам деления на нуль
CERT C++: INT34-CНе переключайте выражение отрицательным числом битов или большим, чем или равняйтесь количеству битов, которые существуют в операнде
CERT C++: INT35-CИспользуйте правильную целочисленную точность
CERT C++: INT36-CПреобразование указателя на целое число или целое число к указателю
CERT C++: ARR30-CНе формируйте или используйте за пределы индексы массивов или указатели
CERT C++: ARR37-CНе добавляйте или вычитайте целое число к указателю на объект немассивов
CERT C++: ARR38-CГарантируйте, что библиотечные функции не формируют недопустимые указатели
CERT C++: ARR39-CНе добавляйте или вычитайте масштабированное целое число к указателю
CERT C++: CTR50-CPPГарантируйте, что контейнерные индексы и итераторы в допустимой области значений
CERT C++: STR30-CНе пытайтесь изменить строковые литералы
CERT C++: STR31-CГарантируйте, что устройство хранения данных для строк имеет достаточный пробел для символьных данных и пустого терминатора строки
CERT C++: STR32-CНе передавайте не пустую отключенную последовательность символов библиотечной функции, которая ожидает строку
CERT C++: STR34-CБросьте символы к char без знака прежде, чем преобразовать в большие целочисленные размеры
CERT C++: STR37-CАргументы к обрабатывающим символ функциям должны быть представимыми как char без знака
CERT C++: STR38-CНе путайте строки узкого и широкого символа и функции
CERT C++: STR50-CPPГарантируйте, что устройство хранения данных для строк имеет достаточный пробел для символьных данных и пустого терминатора строки
CERT C++: STR53-CPPДоступ к элементу проверки диапазона
CERT C++: MEM30-CНе получайте доступ освобожденный память
CERT C++: MEM31-CСвободная динамически выделенная память, когда больше не необходимый
CERT C++: MEM34-CТолько свободная память, выделенная динамически
CERT C++: MEM35-CВыделите достаточную память для объекта
CERT C++: MEM36-CНе изменяйте выравнивание объектов путем вызова перевыделения ()
CERT C++: MEM50-CPPНе получайте доступ освобожденный память
CERT C++: MEM51-CPPПравильно освободите динамически выделенные ресурсы
CERT C++: MEM52-CPPОбнаружьте и обработайте ошибки распределения памяти
CERT C++: MEM54-CPPПредоставьте размещению, новому правильно выровненные указатели на достаточную емкость памяти
CERT C++: MEM55-CPPСоблюдайте заменяющие требования управления динамической памятью
CERT C++: MEM56-CPPНе храните уже принадлежавшее значение указателя в несвязанном интеллектуальном указателе
CERT C++: MEM57-CPPИзбегайте использования оператора по умолчанию, нового для сверхвыровненных типов
CERT C++: FIO30-CИсключите ввод данных пользователем из строк формата
CERT C++: FIO32-CНе выполняйте операции на устройствах, которые только подходят для файлов
CERT C++: FIO34-CРазличайте символы, считанные из файла и EOF или WEOF
CERT C++: FIO37-CНе принимайте, что fgets () или fgetws () возвращает непустую строку, когда успешный
CERT C++: FIO38-CНе копируйте объект FILE
CERT C++: FIO39-CНе делайте альтернативно ввода и вывода от потока без прошедшего сброса или располагающий вызов
CERT C++: FIO40-CСбросьте строки на fgets () или fgetws () отказ
CERT C++: FIO41-CНе вызывайте getc (), putc (), getwc (), или putwc () с потоковым аргументом, который имеет побочные эффекты
CERT C++: FIO42-CЗакройте файлы, когда они больше не будут необходимы
CERT C++: FIO44-CТолько используйте значения для fsetpos (), которые возвращены в fgetpos ()
CERT C++: FIO45-CИзбегайте условий состязания TOCTOU при доступе к файлам
CERT C++: FIO46-CНе получайте доступ к закрытому файлу
CERT C++: FIO47-CИспользуйте строки допустимого формата
CERT C++: FIO50-CPPНе делайте альтернативно ввода и вывода от потока файла без вызова расположения вмешательства
CERT C++: FIO51-CPPЗакройте файлы, когда они больше не будут необходимы
CERT C++: ERR30-CОбнулите errno прежде, чем вызвать библиотечную функцию, которая, как известно, установила errno и проверять errno только после того, как функция возвратит отказ указания значения
CERT C++: ERR32-CНе используйте неопределенные значения errno
CERT C++: ERR33-CОбнаружьте и обработайте стандартные ошибки библиотеки
CERT C++: ERR34-CОбнаружьте ошибки при преобразовании строки в номер
CERT C++: ERR50-CPPРезко не отключайте программу
CERT C++: ERR51-CPPОбработайте все исключения
CERT C++: ERR52-CPPНе используйте setjmp () или longjmp ()
CERT C++: ERR53-CPPНе ссылайтесь на базовые классы или элементы данных класса в конструкторе или обработчике функционального блока попытки деструктора
CERT C++: ERR54-CPPОбработчики выгоды должны заказать свои типы параметра от наиболее выведенного до наименее выведенного
CERT C++: ERR55-CPPСоблюдайте технические требования исключения
CERT C++: ERR57-CPPНе пропускайте ресурсы при обрабатывании исключений
CERT C++: ERR58-CPPОбработайте все исключения, выданные, прежде чем основной () начнет выполняться
CERT C++: ERR61-CPPОтловите исключения lvalue ссылкой
CERT C++: OOP50-CPPНе вызывайте виртуальные функции от конструкторов или деструкторов
CERT C++: OOP51-CPPНе нарезайте производные объекты
CERT C++: OOP52-CPPНе удаляйте полиморфный объект без виртуального деструктора
CERT C++: OOP53-CPPНапишите инициализаторы члена конструктора в каноническом порядке
CERT C++: OOP54-CPPКорректно обработайте присвоение самокопии
CERT C++: OOP57-CPPПредпочтите специальные функции членства и перегруженные операторы к Стандартным Библиотечным функциям C
CERT C++: OOP58-CPPОперации копии не должны видоизменять исходный объект
CERT C++: CON33-CИзбегайте условий состязания при использовании библиотечных функций
CERT C++: CON37-CНе делайте позывного () в многопоточной программе
CERT C++: CON40-CНе обращайтесь к атомарной переменной дважды в выражении
CERT C++: CON41-CПеренесите функции, которые могут перестать работать побочно в цикле
CERT C++: CON43-CНе позволяйте гонки данных в многопоточном коде
CERT C++: CON50-CPPНе уничтожайте взаимное исключение, в то время как оно заблокировано
CERT C++: CON52-CPPПредотвратите гонки данных при доступе к битовым полям от нескольких потоков
CERT C++: CON53-CPPИзбегайте мертвой блокировки путем привязки предопределенного порядка
CERT C++: CON54-CPPПеренесите функции, которые могут побочно проснуться в цикле
CERT C++: ENV30-CНе изменяйте объект, на который ссылается возвращаемое значение определенных функций
CERT C++: ENV31-CНе используйте указатель среды после операции, которая может делать недействительным его
CERT C++: ENV32-CВсе выходные обработчики должны обычно возвращаться
CERT C++: ENV33-CНе вызывайте систему ()
CERT C++: ENV34-CНе храните указатели, возвращенные определенными функциями
CERT C++: FLP30-CНе используйте переменные с плавающей точкой в качестве счетчиков цикла
CERT C++: FLP32-CПредотвратите или обнаружьте область и ошибки области значений в математических функциях
CERT C++: FLP34-CУбедитесь, что преобразования с плавающей точкой в области значений нового типа
CERT C++: FLP36-CСохраните точность при преобразовании интегральных значений в тип с плавающей точкой
CERT C++: FLP37-CНе используйте объектные представления, чтобы сравнить значения с плавающей точкой
CERT C++: MSC30-CНе используйте rand () функция для генерации псевдослучайных чисел
CERT C++: MSC32-CПравильно отберите генераторы псевдослучайного числа
CERT C++: MSC33-CНе передавайте недопустимые данные asctime () функция
CERT C++: MSC37-CУбедитесь, что управление никогда не достигает конца непустой функции
CERT C++: MSC38-CНе обрабатывайте предопределенный идентификатор как объект, если это может только быть реализовано как макрос
CERT C++: MSC39-CНе вызывайте va_arg () на va_list, который имеет неопределенное значение
CERT C++: MSC40-CНе нарушайте ограничения
CERT C++: MSC41-CНикогда трудная кодозависимая информация
CERT C++: MSC50-CPPНе используйте станд.:: rand () для генерации псевдослучайных чисел
CERT C++: MSC51-CPPГарантируйте, что ваш генератор случайных чисел правильно отобран
CERT C++: MSC52-CPPВозвращающие значение функции должны возвратить значение от всех выходных путей
CERT C++: MSC53-CPPНе возвращайтесь из функции, объявил [[noreturn]]
CERT C++: PRE30-CНе создавайте универсальное имя персонажа посредством конкатенации
CERT C++: PRE31-CИзбегайте побочных эффектов в аргументах к небезопасным макросам
CERT C++: PRE32-CНе используйте директивы препроцессору в вызовах подобных функции макросов
CERT C++: SIG31-CНе получайте доступ к общим объектам в обработчиках сигнала
CERT C++: SIG34-CНе делайте позывного () из прерываемых обработчиков сигнала
CERT C++: SIG35-CНе возвращайтесь из вычислительного обработчика сигнала исключения
Направляющие линии
Number of calling functions exceeds thresholdКоличество отличных вызывающих сторон функции больше заданного порога
Number of called functions exceeds thresholdКоличество отличных вызовов функции в теле функции больше заданного порога
Comment density below thresholdПлотность комментария модуля падает ниже заданного порога
Call tree complexity exceeds thresholdСложность дерева вызова файла больше заданного порога
Number of lines within body exceeds thresholdКоличество линий в теле функции больше заданного порога
Number of executable lines exceeds thresholdКоличество исполняемых линий в теле функции больше заданного порога
Number of goto statements exceeds thresholdКоличество goto операторы в функции больше заданного порога
Depth of call nesting exceeds thresholdГлубина вложения структур управления в функции больше заданного порога глубины вложения функции
Number of local static variables exceeds thresholdКоличество локальных статических переменных в функции больше заданного порога
Number of local nonstatic variables exceeds thresholdКоличество локальных нестатических переменных в функции больше заданного порога
Number of call occurrences exceeds thresholdКоличество вызовов функции в функции больше заданного порога вхождения вызова функции
Number of function parameters exceeds thresholdКоличество аргументов функции больше заданного порога
Number of paths exceeds thresholdКоличество статических путей в функции больше заданного порога
Number of return statements exceeds thresholdКоличество return операторы в функции больше заданного порога
Number of instructions exceeds thresholdКоличество инструкций в функции больше заданного порога
Number of lines exceeds thresholdКоличество общих линий в файле больше заданного порога
Cyclomatic complexity exceeds thresholdЦикломатическая сложность функции больше заданного цикломатического порога сложности функции
Language scope exceeds thresholdОбласть видимости функции языка больше заданного порога

Метрики кода

Number of Direct RecursionsКоличество экземпляров функции, вызывая себя непосредственно
Number of Header FilesКоличество включенных заголовочных файлов
Number of FilesКоличество исходных файлов
Number of RecursionsКоличество циклов графа вызовов по одной или нескольким функциям
Comment DensityОтношение количества комментариев к количеству операторов
Estimated Function CouplingМера сложности между уровнями дерева вызова
Number of LinesОбщее количество линий в файле
Number of Lines Without CommentКоличество линий кода, исключая линии, которые являются комментариями или пробелом
Cyclomatic ComplexityКоличество линейно независимых контуров в теле функции
Higher Estimate of Size of Local VariablesОбщий размер всех локальных переменных в функции
Language ScopeОсциллограф языка
Lower Estimate of Size of Local VariablesОбщий размер локальных переменных в функции, принимая вложенные осциллографы во внимание
Number of Call LevelsМаксимальная глубина вложения структур потока управления
Number of Call OccurrencesКоличество вызовов в теле функции
Number of Called FunctionsКоличество отличных функций называется в теле функции
Number of Calling FunctionsКоличество отличных вызывающих сторон функции
Number of Executable LinesКоличество исполняемых линий в теле функции
Number of Function ParametersКоличество аргументов функции
Number of Goto StatementsКоличество goto операторы
Number of InstructionsКоличество инструкций на функцию
Number of Lines Within BodyКоличество линий в теле функции
Number of Local Non-Static VariablesОбщее количество локальных переменных в функции
Number of Local Static VariablesОбщее количество локальных статических переменных в функции
Number of PathsПредполагаемое статическое количество пути
Number of Return StatementsКоличество return операторы в функции