Требуемый MISRA C ++:2008 правил кодирования, поддержанных Polyspace Bug Finder

MISRA C ++:2008 стандартов классифицирует правила, что совместимый Код С++ должен следовать как требуется. Polyspace® Bug Finder поддерживает 192 из 198, потребовал MISRA C ++:2008 правил кодирования.

Поддерживаемые правила

Polyspace поддерживает эти Необходимые правила.

MISRA C ++:2008 правилОписаниеСредство проверки Polyspace
MISRA C ++:2008 правил 0-1-1Проект не должен содержать недостижимый кодMISRA C++:2008 Rule 0-1-1
MISRA C ++:2008 правил 0-1-10Каждая заданная функция должна быть вызвана, по крайней мере, однаждыMISRA C++:2008 Rule 0-1-10
MISRA C ++:2008 правил 0-1-11Не должно быть никаких неиспользованных параметров (названы или без имени) в невиртуальных функцияхMISRA C++:2008 Rule 0-1-11
MISRA C ++:2008 правил 0-1-12Не должно быть никаких неиспользованных параметров (названы или без имени) в наборе параметров для виртуальной функции и всех функций, которые заменяют егоMISRA C++:2008 Rule 0-1-12
MISRA C ++:2008 правил 0-1-2Проект не должен содержать неосуществимые путиMISRA C++:2008 Rule 0-1-2
MISRA C ++:2008 правил 0-1-3Проект не должен содержать неиспользуемые переменныеMISRA C++:2008 Rule 0-1-3
MISRA C ++:2008 правил 0-1-4Проект не должен содержать энергонезависимые переменные POD, имеющие только одно использованиеMISRA C++:2008 Rule 0-1-4
MISRA C ++:2008 правил 0-1-5Проект не должен содержать неиспользованные описания типаMISRA C++:2008 Rule 0-1-5
MISRA C ++:2008 правил 0-1-7Значение, возвращенное функцией, имеющей не - пустой тип возврата, который не является перегруженным оператором, должно всегда использоватьсяMISRA C++:2008 Rule 0-1-7
MISRA C ++:2008 правил 0-1-9Не должно быть никакого мертвого кодаMISRA C++:2008 Rule 0-1-9
MISRA C ++:2008 правил 0-2-1Объект не должен быть присвоен перекрывающемуся объектуMISRA C++:2008 Rule 0-2-1
MISRA C ++:2008 правил 0-3-2Если функция сгенерирует информацию об ошибке, то та информация об ошибке должна быть протестированаMISRA C++:2008 Rule 0-3-2
MISRA C ++:2008 правил 10-1-2Базовый класс должен только быть объявлен виртуальный, если он будет использоваться в ромбовидной иерархииMISRA C++:2008 Rule 10-1-2
MISRA C ++:2008 правил 10-1-3Доступный базовый класс не должен быть и виртуальным и невиртуальным в той же иерархииMISRA C++:2008 Rule 10-1-3
MISRA C ++:2008 правил 10-3-1Должно быть не больше, чем одно определение каждой виртуальной функции на каждом пути через иерархию наследованияMISRA C++:2008 Rule 10-3-1
MISRA C ++:2008 правил 10-3-2Каждая переопределяющая виртуальная функция должна быть объявлена с виртуальным ключевым словомMISRA C++:2008 Rule 10-3-2
MISRA C ++:2008 правил 10-3-3Виртуальная функция должна только быть заменена чистой виртуальной функцией, если она будет самостоятельно объявлена как чистая виртуальнаяMISRA C++:2008 Rule 10-3-3
MISRA C ++:2008 правил 11-0-1Данные члена в не - типы классов POD должны быть частнымиMISRA C++:2008 Rule 11-0-1
MISRA C ++:2008 правил 12-1-1Динамический тип объекта не должен использоваться от тела его конструктора или деструктораMISRA C++:2008 Rule 12-1-1
MISRA C ++:2008 правил 12-1-3Все конструкторы, которые являются вызываемыми с отдельным аргументом фундаментального типа, должны быть объявлены явныеMISRA C++:2008 Rule 12-1-3
MISRA C ++:2008 правил 12-8-1Конструктор копии должен только инициализировать ее базовые классы и не - статические члены класса, которого это - членMISRA C++:2008 Rule 12-8-1
MISRA C ++:2008 правил 12-8-2Оператор присваивания копии должен быть объявлен защищенный или частный в абстрактном классеMISRA C++:2008 Rule 12-8-2
MISRA C ++:2008 правил 14-5-1Родовая функция лица, не являющегося членом какой-либо организации, должна только быть объявлена в пространстве имен, которое не является связанным пространством именMISRA C++:2008 Rule 14-5-1
MISRA C ++:2008 правил 14-5-2Конструктор копии должен быть объявлен, когда будет конструктор шаблона одним параметром, который является типовым параметромMISRA C++:2008 Rule 14-5-2
MISRA C ++:2008 правил 14-5-3Оператор присваивания копии должен быть объявлен, когда будет оператор присваивания шаблона параметром, который является типовым параметромMISRA C++:2008 Rule 14-5-3
MISRA C ++:2008 правил 14-6-1В шаблоне класса с зависимой основой любое имя, которое может быть найдено в той зависимой основе, должно быть отнесено в использование квалифицированного ID или этого->MISRA C++:2008 Rule 14-6-1
MISRA C ++:2008 правил 14-6-2Функция, выбранная разрешением перегрузки, должна решить к функции, объявленной ранее в модуле переводаMISRA C++:2008 Rule 14-6-2
MISRA C ++:2008 правил 14-7-3Все частичные и явные специализации для шаблона должны быть объявлены в том же файле как объявление их первичного шаблонаMISRA C++:2008 Rule 14-7-3
MISRA C ++:2008 правил 14-8-1Шаблоны перегруженной функции не должны быть явным образом специализированыMISRA C++:2008 Rule 14-8-1
MISRA C ++:2008 правил 15-0-3Управление не должно быть передано в попытку или блок выгоды с помощью goto или оператора switchMISRA C++:2008 Rule 15-0-3
MISRA C ++:2008 правил 15-1-1Выражение присваивания оператора броска не должно самостоятельно заставлять исключение быть выданнымMISRA C++:2008 Rule 15-1-1
MISRA C ++:2008 правил 15-1-2NULL не должен быть выдан явным образомMISRA C++:2008 Rule 15-1-2
MISRA C ++:2008 правил 15-1-3Пустой бросок (бросок;) буду только использоваться в составном операторе обработчика выгодыMISRA C++:2008 Rule 15-1-3
MISRA C ++:2008 правил 15-3-1Исключения должны быть повышены только после запуска и перед завершением программыMISRA C++:2008 Rule 15-3-1
MISRA C ++:2008 правил 15-3-3Обработчики реализации функционального блока попытки конструктора класса или деструктора не должны ссылаться на нестатические члены от этого класса или его основMISRA C++:2008 Rule 15-3-3
MISRA C ++:2008 правил 15-3-4Каждое исключение, явным образом добавленное, код должен иметь обработчик совместимого типа во всех путях к вызову, которые могли привести к той точкеMISRA C++:2008 Rule 15-3-4
MISRA C ++:2008 правил 15-3-5Исключение типа класса должно всегда отлавливаться ссылкойMISRA C++:2008 Rule 15-3-5
MISRA C ++:2008 правил 15-3-6Где несколько обработчиков обеспечиваются в одном операторе try-catch или функциональном блоке попытки для производного класса, и некоторые или все его основы, обработчики должны быть упорядочены наиболее выведенные базовому классуMISRA C++:2008 Rule 15-3-6
MISRA C ++:2008 правил 15-3-7Где несколько обработчиков обеспечиваются в одном операторе try-catch или функциональном блоке попытки, любой замещающий знак (вместилище), обработчик должен произойти в последний разMISRA C++:2008 Rule 15-3-7
MISRA C ++:2008 правил 15-4-1Если функция будет объявлена со спецификацией исключения, то все объявления той же функции (в других модулях перевода) должны быть объявлены с тем же набором идентификаторов типовMISRA C++:2008 Rule 15-4-1
MISRA C ++:2008 правил 15-5-1Деструктор класса не должен выходить за исключениемMISRA C++:2008 Rule 15-5-1
MISRA C ++:2008 правил 15-5-2Где объявление функции включает спецификацию исключения, функция должна только быть способна к выдаванию исключения обозначенного типа (типов)MISRA C++:2008 Rule 15-5-2
MISRA C ++:2008 правил 15-5-3Оконечное () функция не должно быть названо неявноMISRA C++:2008 Rule 15-5-3
MISRA C ++:2008 правил 16-0-1Директивам #include в файле должны только предшествовать другие директивы препроцессору или комментарииMISRA C++:2008 Rule 16-0-1
MISRA C ++:2008 правил 16-0-2Макросы должны только быть #define 'd или #undef 'd в глобальном пространстве именMISRA C++:2008 Rule 16-0-2
MISRA C ++:2008 правил 16-0-3#undef не должен использоватьсяMISRA C++:2008 Rule 16-0-3
MISRA C ++:2008 правил 16-0-4Подобные функции макросы не должны быть заданыMISRA C++:2008 Rule 16-0-4
MISRA C ++:2008 правил 16-0-5Аргументы к подобному функции макросу не должны содержать лексемы, которые похожи на предварительную обработку директивMISRA C++:2008 Rule 16-0-5
MISRA C ++:2008 правил 16-0-6В определении подобного функции макроса каждый экземпляр параметра должен быть заключен в круглые скобки, если это не будет использоваться в качестве операнда # или ##MISRA C++:2008 Rule 16-0-6
MISRA C ++:2008 правил 16-0-7Неопределенные макро-идентификаторы не должны использоваться в #if или #elif директивах препроцессору, за исключением операндов к заданному операторуMISRA C++:2008 Rule 16-0-7
MISRA C ++:2008 правил 16-0-8Если # лексема появится как первая лексема на линии, то это должно сразу сопровождаться лексемой предварительной обработкиMISRA C++:2008 Rule 16-0-8
MISRA C ++:2008 правил 16-1-1Заданный оператор препроцессора должен только использоваться в одной из двух стандартных формMISRA C++:2008 Rule 16-1-1
MISRA C ++:2008 правил 16-1-2Весь #else, #elif и #endif директивы препроцессору должен находиться в том же файле как #if или #ifdef директива, с которой они связаныMISRA C++:2008 Rule 16-1-2
MISRA C ++:2008 правил 16-2-1Препроцессор должен только использоваться для включения файла и включать защитуMISRA C++:2008 Rule 16-2-1
MISRA C ++:2008 правил 16-2-2Макросы C++ должны только использоваться для: включайте защиту, введите спецификаторы или спецификаторы класса памятиMISRA C++:2008 Rule 16-2-2
MISRA C ++:2008 правил 16-2-3Включайте защиту, буду обеспеченMISRA C++:2008 Rule 16-2-3
MISRA C ++:2008 правил 16-2-4', ",/* или//символы не должны происходить на имя заголовочного файлаMISRA C++:2008 Rule 16-2-4
MISRA C ++:2008 правил 16-2-6#include директива должна сопровождаться или <имя файла> или последовательность "имени файла"MISRA C++:2008 Rule 16-2-6
MISRA C ++:2008 правил 16-3-1Должно быть самое большее одно вхождение # или ## операторов в одном макроопределенииMISRA C++:2008 Rule 16-3-1
MISRA C ++:2008 правил 17-0-1Зарезервированные идентификаторы, макросы и функции в Стандартной Библиотеке не должны быть заданы, переопределены или не определеныMISRA C++:2008 Rule 17-0-1
MISRA C ++:2008 правил 17-0-2Имена стандартных макросов библиотеки и объектов не должны быть снова использованыMISRA C++:2008 Rule 17-0-2
MISRA C ++:2008 правил 17-0-3Имена стандартных библиотечных функций не должны быть замененыMISRA C++:2008 Rule 17-0-3
MISRA C ++:2008 правил 17-0-5setjmp макрос и функция longjmp не должны использоватьсяMISRA C++:2008 Rule 17-0-5
MISRA C ++:2008 правил 18-0-1Библиотекой C нельзя пользоватьсяMISRA C++:2008 Rule 18-0-1
MISRA C ++:2008 правил 18-0-2Библиотечные функции atof, atoi и атолл от библиотеки <cstdlib> не должны использоватьсяMISRA C++:2008 Rule 18-0-2
MISRA C ++:2008 правил 18-0-3Аварийное прекращение работы библиотечных функций, выход, getenv и система от библиотеки <cstdlib> не должны использоватьсяMISRA C++:2008 Rule 18-0-3
MISRA C ++:2008 правил 18-0-4Функции обработки времени библиотеки <ctime> не должны использоватьсяMISRA C++:2008 Rule 18-0-4
MISRA C ++:2008 правил 18-0-5Неограниченные функции библиотеки <cstring> не должны использоватьсяMISRA C++:2008 Rule 18-0-5
MISRA C ++:2008 правил 18-2-1Макрос offsetof не должен использоватьсяMISRA C++:2008 Rule 18-2-1
MISRA C ++:2008 правил 18-4-1Динамическое выделение памяти кучи не должно использоватьсяMISRA C++:2008 Rule 18-4-1
MISRA C ++:2008 правил 18-7-1Погрузочно-разгрузочное оборудование сигнала <csignal> не должно использоватьсяMISRA C++:2008 Rule 18-7-1
MISRA C ++:2008 правил 19-3-1Ошибочный индикатор errno не должен использоватьсяMISRA C++:2008 Rule 19-3-1
MISRA C ++:2008 правил 1-0-1Весь код должен соответствовать ISO/IEC 14882:2003 "Стандарт C++ Слияние Технического Исправления 1"MISRA C++:2008 Rule 1-0-1
MISRA C ++:2008 правил 27-0-1Потоковый ввод / выходная библиотека <cstdio> не должен использоватьсяMISRA C++:2008 Rule 27-0-1
MISRA C ++:2008 правил 2-10-1Различные идентификаторы должны быть типографским способом однозначнымиMISRA C++:2008 Rule 2-10-1
MISRA C ++:2008 правил 2-10-2Идентификаторы, объявленные во внутреннем осциллографе, не должны скрывать идентификатор, объявленный во внешнем осциллографеMISRA C++:2008 Rule 2-10-2
MISRA C ++:2008 правил 2-10-3Имя определения типа (включая проверку, если таковые имеются) должно быть уникальным идентификаторомMISRA C++:2008 Rule 2-10-3
MISRA C ++:2008 правил 2-10-4Класс, объединение или перечислимое имя (включая проверку, если таковые имеются) должны быть уникальным идентификаторомMISRA C++:2008 Rule 2-10-4
MISRA C ++:2008 правил 2-10-6Если идентификатор будет относиться к типу, он не должен также относиться к объекту или функции в том же осциллографеMISRA C++:2008 Rule 2-10-6
MISRA C ++:2008 правил 2-13-1Только те escape-последовательности, которые заданы в ISO/IEC 14882:2003, должны использоватьсяMISRA C++:2008 Rule 2-13-1
MISRA C ++:2008 правил 2-13-2Восьмеричные константы (кроме нуля) и восьмеричные escape-последовательности (кроме "\0") не должны использоватьсяMISRA C++:2008 Rule 2-13-2
MISRA C ++:2008 правил 2-13-3Суффикс "U" должен быть применен ко всем восьмеричным или шестнадцатеричным целочисленным литералам типа без знакаMISRA C++:2008 Rule 2-13-3
MISRA C ++:2008 правил 2-13-4Литеральные суффиксы должны быть верхним регистромMISRA C++:2008 Rule 2-13-4
MISRA C ++:2008 правил 2-13-5Узкие и широкие строковые литералы не должны быть конкатенированыMISRA C++:2008 Rule 2-13-5
MISRA C ++:2008 правил 2-3-1Trigraphs не должен использоватьсяMISRA C++:2008 Rule 2-3-1
MISRA C ++:2008 правил 2-7-1Последовательность символов/* не должна использоваться в рамках комментария C-стиляMISRA C++:2008 Rule 2-7-1
MISRA C ++:2008 правил 2-7-2Разделы кода не должны быть то, " закомментировал" использование комментариев C-стиляMISRA C++:2008 Rule 2-7-2
MISRA C ++:2008 правил 3-1-1Должно быть возможно включать любой заголовочный файл в несколько модулей перевода, не нарушая Одно Правило ОпределенияMISRA C++:2008 Rule 3-1-1
MISRA C ++:2008 правил 3-1-2Функции не должны быть объявлены в области действия блокаMISRA C++:2008 Rule 3-1-2
MISRA C ++:2008 правил 3-1-3Когда массив будет объявлен, его размер должен или быть утвержден явным образом или задан неявно инициализациейMISRA C++:2008 Rule 3-1-3
MISRA C ++:2008 правил 3-2-1Все объявления объекта или функции должны иметь совместимые типыMISRA C++:2008 Rule 3-2-1
MISRA C ++:2008 правил 3-2-2Одно Правило Определения не должно быть нарушеноMISRA C++:2008 Rule 3-2-2
MISRA C ++:2008 правил 3-2-3Тип, объект или функция, которая используется в нескольких модулях перевода, должны быть объявлены в одном и только одном файлеMISRA C++:2008 Rule 3-2-3
MISRA C ++:2008 правил 3-2-4Идентификатор с внешним рычажным устройством должен иметь точно одно определениеMISRA C++:2008 Rule 3-2-4
MISRA C ++:2008 правил 3-3-1Объекты или функции с внешним рычажным устройством должны быть объявлены в заголовочном файлеMISRA C++:2008 Rule 3-3-1
MISRA C ++:2008 правил 3-3-2Если функция будет иметь внутреннее рычажное устройство затем, то все переобъявления должны включать статический спецификатор класса памятиMISRA C++:2008 Rule 3-3-2
MISRA C ++:2008 правил 3-4-1Идентификатор, который, как объявляют, был объектом или типом, должен быть задан в блоке, который минимизирует его видимостьMISRA C++:2008 Rule 3-4-1
MISRA C ++:2008 правил 3-9-1Типы, используемые для объекта, функционального типа возврата или параметра функции, должны быть лексемой для лексемы, идентичной во всех объявлениях и переобъявленияхMISRA C++:2008 Rule 3-9-1
MISRA C ++:2008 правил 3-9-3Базовые битные представления значений с плавающей точкой не должны использоватьсяMISRA C++:2008 Rule 3-9-3
MISRA C ++:2008 правил 4-10-1NULL не должен использоваться в качестве целочисленного значенияMISRA C++:2008 Rule 4-10-1
MISRA C ++:2008 правил 4-10-2Литеральный нуль (0) не должен использоваться в качестве постоянного нулевым указателемMISRA C++:2008 Rule 4-10-2
MISRA C ++:2008 правил 4-5-1Выражения с типом bool не должны использоваться в качестве операндов к встроенным операторам кроме оператора присваивания =, логические операторы &&, ||!, операторы равенства == и! =, унарное & оператор и условный операторMISRA C++:2008 Rule 4-5-1
MISRA C ++:2008 правил 4-5-2Выражения с перечислением типа не должны использоваться в качестве операндов к созданному - в операторах кроме оператора индекса [], оператор присваивания =, операторы равенства == и! =, унарное & оператор и операторы отношения <<=>,> =MISRA C++:2008 Rule 4-5-2
MISRA C ++:2008 правил 4-5-3Выражения с типом (простой) char и wchar_t не должны использоваться в качестве операндов к встроенным операторам кроме оператора присваивания =, операторы равенства == и! =, и унарное & оператор NMISRA C++:2008 Rule 4-5-3
MISRA C ++:2008 правил 5-0-1Значение выражения должно быть тем же самым согласно любому порядку оценки, которую разрешает стандартMISRA C++:2008 Rule 5-0-1
MISRA C ++:2008 правил 5-0-10Если побитовые операторы ~ и <<будут применены к операнду с базовым типом символьного или короткого целого без знака без знака, результат должен быть сразу брошен к базовому типу операндаMISRA C++:2008 Rule 5-0-10
MISRA C ++:2008 правил 5-0-11Простой символьный тип должен только использоваться для устройства хранения данных и использования символьных значенийMISRA C++:2008 Rule 5-0-11
MISRA C ++:2008 правил 5-0-12Символ со знаком и символьный тип без знака должны только использоваться для устройства хранения данных и использования числовых значенийMISRA C++:2008 Rule 5-0-12
MISRA C ++:2008 правил 5-0-13Условие оператора "if" и условие оператора цикла должны иметь тип boolMISRA C++:2008 Rule 5-0-13
MISRA C ++:2008 правил 5-0-14Первый операнд условного оператора должен иметь тип boolMISRA C++:2008 Rule 5-0-14
MISRA C ++:2008 правил 5-0-15Индексация массива должна быть единственной формой адресной арифметики с указателямиMISRA C++:2008 Rule 5-0-15
MISRA C ++:2008 правил 5-0-16Операнд указателя и любой указатель, следующий из адресной арифметики с указателями с помощью того операнда, должны оба обратиться к элементам того же массива.MISRA C++:2008 Rule 5-0-16
MISRA C ++:2008 правил 5-0-17Вычитание между указателями должно только быть применено к указателям, которые обращаются к элементам того же массиваMISRA C++:2008 Rule 5-0-17
MISRA C ++:2008 правил 5-0-18>,> =, <<= не буду применен к объектам типа указателя, кроме того, где они указывают на тот же массивMISRA C++:2008 Rule 5-0-18
MISRA C ++:2008 правил 5-0-19Объявление объектов должно содержать не больше, чем два уровня косвенности указателяMISRA C++:2008 Rule 5-0-19
MISRA C ++:2008 правил 5-0-20Непостоянные операнды к бинарному побитовому оператору должны иметь тот же базовый типMISRA C++:2008 Rule 5-0-20
MISRA C ++:2008 правил 5-0-21Побитовые операторы должны только быть применены к операндам базового типа без знакаMISRA C++:2008 Rule 5-0-21
MISRA C ++:2008 правил 5-0-3cvalue выражение не должно быть неявно преобразовано в различный базовый типMISRA C++:2008 Rule 5-0-3
MISRA C ++:2008 правил 5-0-4Неявное интегральное преобразование не должно изменять со знаком из базового типаMISRA C++:2008 Rule 5-0-4
MISRA C ++:2008 правил 5-0-5Не должно быть никаких неявных интегральных плаванием преобразованийMISRA C++:2008 Rule 5-0-5
MISRA C ++:2008 правил 5-0-6Неявное интегральное или преобразование с плавающей точкой не должно уменьшать размер базового типаMISRA C++:2008 Rule 5-0-6
MISRA C ++:2008 правил 5-0-7Не должно быть никаких явных интегральных плаванием преобразований cvalue выраженияMISRA C++:2008 Rule 5-0-7
MISRA C ++:2008 правил 5-0-8Явное интегральное или преобразование с плавающей точкой не должно увеличивать размер базового типа cvalue выраженияMISRA C++:2008 Rule 5-0-8
MISRA C ++:2008 правил 5-0-9Явное интегральное преобразование не должно изменять со знаком из базового типа cvalue выраженияMISRA C++:2008 Rule 5-0-9
MISRA C ++:2008 правил 5-14-1Правый операнд логического && или || оператор не должен содержать побочные эффектыMISRA C++:2008 Rule 5-14-1
MISRA C ++:2008 правил 5-18-1Оператор запятой не должен использоватьсяMISRA C++:2008 Rule 5-18-1
MISRA C ++:2008 правил 5-2-1Каждый операнд логического && или || должен быть постфиксным выражениемMISRA C++:2008 Rule 5-2-1
MISRA C ++:2008 правил 5-2-11Оператор запятой, && оператор и || оператор не должен быть перегруженMISRA C++:2008 Rule 5-2-11
MISRA C ++:2008 правил 5-2-12Идентификатор с типом массива, переданным как аргумент функции, не должен затухать к указателюMISRA C++:2008 Rule 5-2-12
MISRA C ++:2008 правил 5-2-2Указатель на виртуальный базовый класс должен только быть брошен к указателю на производный класс посредством dynamic_castMISRA C++:2008 Rule 5-2-2
MISRA C ++:2008 правил 5-2-4Броски C-стиля (кроме пустых бросков) и функциональных бросков обозначения (кроме вызовов явного конструктора) не должны использоватьсяMISRA C++:2008 Rule 5-2-4
MISRA C ++:2008 правил 5-2-5Бросок не должен удалять const или энергозависимую проверку от типа указателя или ссылкиMISRA C++:2008 Rule 5-2-5
MISRA C ++:2008 правил 5-2-6Бросок не должен преобразовывать указатель на функцию ни к какому другому типу указателя, включая указатель на функциональный типMISRA C++:2008 Rule 5-2-6
MISRA C ++:2008 правил 5-2-7Объект с типом указателя не должен быть преобразован в несвязанный тип указателя, ни один прямо или косвенноMISRA C++:2008 Rule 5-2-7
MISRA C ++:2008 правил 5-2-8Объект с целочисленным типом или указателем, чтобы освободить тип не должен быть преобразован в объект с типом указателяMISRA C++:2008 Rule 5-2-8
MISRA C ++:2008 правил 5-3-1Каждый операнд! оператор, логический && или логическое || операторы должны иметь тип boolMISRA C++:2008 Rule 5-3-1
MISRA C ++:2008 правил 5-3-2Оператор унарный минус не должен быть применен к выражению, базовый тип которого без знакаMISRA C++:2008 Rule 5-3-2
MISRA C ++:2008 правил 5-3-3Унарное & оператор не должны быть перегруженыMISRA C++:2008 Rule 5-3-3
MISRA C ++:2008 правил 5-3-4Оценка операнда к sizeof оператору не должна содержать побочные эффектыMISRA C++:2008 Rule 5-3-4
MISRA C ++:2008 правил 5-8-1Правый операнд оператора сдвига должен находиться между нулем и меньше, чем ширина в битах базового типа левого операндаMISRA C++:2008 Rule 5-8-1
MISRA C ++:2008 правил 6-2-1Операторы присваивания не должны использоваться в подвыраженияхMISRA C++:2008 Rule 6-2-1
MISRA C ++:2008 правил 6-2-2Выражения с плавающей точкой не должны быть прямо или косвенно протестированы на равенство или неравенствоMISRA C++:2008 Rule 6-2-2
MISRA C ++:2008 правил 6-2-3Перед предварительной обработкой пустой оператор должен только произойти на линии отдельно; это может сопровождаться комментарием, при условии, что первый символ после пустого оператора является белым - пробелMISRA C++:2008 Rule 6-2-3
MISRA C ++:2008 правил 6-3-1Оператор, формирующий тело переключателя, в то время как, делает, в то время как или для оператора будет составной операторMISRA C++:2008 Rule 6-3-1
MISRA C ++:2008 правил 6-4-1Если (условие) создают, еще буду сопровождаться составным оператором, ключевое слово должно сопровождаться или составным оператором или другим оператором ifMISRA C++:2008 Rule 6-4-1
MISRA C ++:2008 правил 6-4-2Все, если еще, если построения должны быть отключены с выражением elseMISRA C++:2008 Rule 6-4-2
MISRA C ++:2008 правил 6-4-3Оператор switch должен быть правильно построенным оператором switchMISRA C++:2008 Rule 6-4-3
MISRA C ++:2008 правил 6-4-4Метка переключателя должна только использоваться, когда наиболее тесно заключающий составной оператор будет телом оператора switchMISRA C++:2008 Rule 6-4-4
MISRA C ++:2008 правил 6-4-5Безусловный бросок или оператор завершения должны отключить каждый не - пустой пункт переключателяMISRA C++:2008 Rule 6-4-5
MISRA C ++:2008 правил 6-4-6Итоговый пункт оператора switch должен быть пунктом по умолчаниюMISRA C++:2008 Rule 6-4-6
MISRA C ++:2008 правил 6-4-7Условие оператора switch не должно иметь типа boolMISRA C++:2008 Rule 6-4-7
MISRA C ++:2008 правил 6-4-8Каждый оператор switch должен иметь по крайней мере один пункт случаяMISRA C++:2008 Rule 6-4-8
MISRA C ++:2008 правил 6-5-1Цикл for должен содержать один счетчик цикла, который не должен иметь типа с плавающей точкойMISRA C++:2008 Rule 6-5-1
MISRA C ++:2008 правил 6-5-2Если счетчик цикла не будет изменен - или ++, то в условии счетчик цикла должен только использоваться в качестве операнда к <=, <> или> =MISRA C++:2008 Rule 6-5-2
MISRA C ++:2008 правил 6-5-3Счетчик цикла не должен быть изменен в условии или оператореMISRA C++:2008 Rule 6-5-3
MISRA C ++:2008 правил 6-5-4Счетчик цикла должен быть изменен одним из: - ++, - =n, или + =n; где n остается постоянным на время циклаMISRA C++:2008 Rule 6-5-4
MISRA C ++:2008 правил 6-5-5Контрольная переменная цикла кроме счетчика цикла не должна быть изменена в условии или выраженииMISRA C++:2008 Rule 6-5-5
MISRA C ++:2008 правил 6-5-6Контрольная переменная цикла кроме счетчика цикла, который изменяется в операторе, должна иметь тип boolMISRA C++:2008 Rule 6-5-6
MISRA C ++:2008 правил 6-6-1Любая метка, на которую ссылается оператор перехода, должна быть объявлена в том же блоке, или в блоке, заключающем оператор переходаMISRA C++:2008 Rule 6-6-1
MISRA C ++:2008 правил 6-6-2Оператор перехода должен перейти к метке, объявленной позже в том же теле функцииMISRA C++:2008 Rule 6-6-2
MISRA C ++:2008 правил 6-6-3Оператор continue должен только использоваться в правильно построенном цикле forMISRA C++:2008 Rule 6-6-3
MISRA C ++:2008 правил 6-6-4Для любого оператора цикла должен быть не больше, чем один оператор завершения, или оператор перехода использовал завершение цикла forMISRA C++:2008 Rule 6-6-4
MISRA C ++:2008 правил 6-6-5Функция должна иметь одну точку выхода в конце функцииMISRA C++:2008 Rule 6-6-5
MISRA C ++:2008 правил 7-1-1Переменная, которая не изменяется, должна быть квалифицированным constMISRA C++:2008 Rule 7-1-1
MISRA C ++:2008 правил 7-1-2Указатель или параметр ссылки в функции должны быть объявлены как указатель на const или ссылка на const, если соответствующий объект не будет измененMISRA C++:2008 Rule 7-1-2
MISRA C ++:2008 правил 7-3-1Глобальное пространство имен должно только содержать основные, объявления пространства имен и экстерна "C" объявленияMISRA C++:2008 Rule 7-3-1
MISRA C ++:2008 правил 7-3-2Основной идентификатор не должен использоваться для функции кроме глобального функционального основногоMISRA C++:2008 Rule 7-3-2
MISRA C ++:2008 правил 7-3-3В заголовочных файлах не должно быть никаких пространств имен без имениMISRA C++:2008 Rule 7-3-3
MISRA C ++:2008 правил 7-3-4директивы использования не должны использоватьсяMISRA C++:2008 Rule 7-3-4
MISRA C ++:2008 правил 7-3-5Многократные объявления для идентификатора в том же пространстве имен не должны колебаться между объявлением использования для того идентификатораMISRA C++:2008 Rule 7-3-5
MISRA C ++:2008 правил 7-3-6директивы использования и объявления использования (исключая осциллограф класса или функциональные объявления использования осциллографа) не должны использоваться в заголовочных файлахMISRA C++:2008 Rule 7-3-6
MISRA C ++:2008 правил 7-4-2Ассемблерные инструкции должны только быть введены с помощью asm объявленияMISRA C++:2008 Rule 7-4-2
MISRA C ++:2008 правил 7-4-3Ассемблер должен инкапсулироваться и изолироватьсяMISRA C++:2008 Rule 7-4-3
MISRA C ++:2008 правил 7-5-1Функция не должна возвращать ссылку или указатель на автоматическую переменную (включая параметры), заданный в функцииMISRA C++:2008 Rule 7-5-1
MISRA C ++:2008 правил 7-5-2Адрес объекта с автоматическим хранением не должен быть присвоен другому объекту, который может сохраниться после того, как первый объект прекратил существованиеMISRA C++:2008 Rule 7-5-2
MISRA C ++:2008 правил 7-5-3Функция не должна возвращать ссылку или указатель на параметр, который передается ссылкой const или ссылкойMISRA C++:2008 Rule 7-5-3
MISRA C ++:2008 правил 8-0-1Init-declarator-list или список оператора объявления члена должны состоять из одного init-оператора-объявления или оператора объявления члена соответственноMISRA C++:2008 Rule 8-0-1
MISRA C ++:2008 правил 8-3-1Параметры в переопределяющей виртуальной функции должны или использовать те же параметры по умолчанию в качестве функции, которую они заменяют или иначе не должны задавать параметры по умолчаниюMISRA C++:2008 Rule 8-3-1
MISRA C ++:2008 правил 8-4-1Функции не должны быть заданы с помощью обозначения замещающего знакаMISRA C++:2008 Rule 8-4-1
MISRA C ++:2008 правил 8-4-2Идентификаторы, используемые для параметров в переобъявлении функции, должны быть идентичны тем в объявленииMISRA C++:2008 Rule 8-4-2
MISRA C ++:2008 правил 8-4-3Все выходные пути от функции с не - пустой тип возврата должны иметь явный оператор возврата с выражениемMISRA C++:2008 Rule 8-4-3
MISRA C ++:2008 правил 8-4-4Функциональный идентификатор должен или использоваться, чтобы вызвать функцию, или этим нужно предшествовать &MISRA C++:2008 Rule 8-4-4
MISRA C ++:2008 правил 8-5-1Все переменные должны иметь заданное значение, прежде чем они будут использоватьсяMISRA C++:2008 Rule 8-5-1
MISRA C ++:2008 правил 8-5-2Фигурные скобки должны использоваться, чтобы указать и совпадать со структурой в не - нулевая инициализация массивов и структурMISRA C++:2008 Rule 8-5-2
MISRA C ++:2008 правил 8-5-3В списке перечислителей = построение не должно использоваться, чтобы явным образом инициализировать члены кроме первого, если все элементы не будут явным образом инициализированыMISRA C++:2008 Rule 8-5-3
MISRA C ++:2008 правил 9-3-1функции членства const не должны возвращать указатели неconst или ссылки на данные классаMISRA C++:2008 Rule 9-3-1
MISRA C ++:2008 правил 9-3-2Функции членства не должны возвращать указатели неconst на данные классаMISRA C++:2008 Rule 9-3-2
MISRA C ++:2008 правил 9-3-3Если функция членства может быть сделана статической затем, это должно быть сделано статическим, в противном случае если это может быть сделано const затем, это должно быть сделано constMISRA C++:2008 Rule 9-3-3
MISRA C ++:2008 правил 9-5-1Объединения не должны использоватьсяMISRA C++:2008 Rule 9-5-1
MISRA C ++:2008 правил 9-6-2Битовые поля должны быть или типом bool или явным образом целочисленным типом со знаком или без знакаMISRA C++:2008 Rule 9-6-2
MISRA C ++:2008 правил 9-6-3Битовые поля не должны иметь перечислимого типаMISRA C++:2008 Rule 9-6-3
MISRA C ++:2008 правил 9-6-4Названные битовые поля с типом целого числа со знаком должны иметь длину больше чем одного битаMISRA C++:2008 Rule 9-6-4

Неподдерживаемые правила

Polyspace не делает поддержек эти Необходимые правила:

ПравилоОписание
0-1-6Проект не должен содержать экземпляры энергонезависимых переменных, даваемых значения, которые впоследствии никогда не используются.
0-1-8Все функции с пустым типом возврата должны иметь внешний побочный эффект (эффекты).
5-17-1Семантическая эквивалентность между бинарным оператором и его формой оператора присваивания должна быть сохранена.
7-2-1Выражение с типом лежания в основе перечисления должно только иметь значения, соответствующие перечислителям перечисления.
14-7-1Все шаблоны классов, шаблоны функций, функции членства шаблона класса и шаблон класса статические члены нужно инстанцировать, по крайней мере, однажды.
14-7-2Для любой данной специализации шаблона явное инстанцирование шаблона с аргументами шаблона, используемыми в специализации, не должно представлять плохо сформированную программу.

Смотрите также

Похожие темы