Директивы MISRA C:2012 и правила

Описания и пример инструкций MISRA C:2012 поддержаны в Polyspace®

Polyspace Code Prover™ может проверять ваш код по большинству правил кодирования MISRA® C:2012 и некоторым директивам. Подгруппы перечислили карту к различным подмножествам, обрисованным в общих чертах в инструкциях MISRA C®:2012. Можно активировать различные подмножества правил с помощью аналитической опции Check MISRA C:2012 (-misra3).

Результаты Polyspace

развернуть все

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.5Идентификаторы в том же пространстве имен с перекрывающейся видимостью должны быть типографским способом однозначными
MISRA C:2012 Dir 4.6определения типов, которые указывают на размер и со знаком, должны использоваться вместо основных числовых типов
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 Rule 1.1Программа не должна содержать нарушения стандартного Синтаксиса C и ограничения, и не должна превышать пределы перевода реализации
MISRA C:2012 Rule 1.2Расширения языка не должны использоваться
MISRA C:2012 Rule 1.3Не должно быть никакого вхождения неопределенного или критического незаданного поведения
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 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.7atof, atoi, атолл и функции атолла <stdlib.h> не должны использоваться
MISRA C:2012 Rule 21.8Аварийное прекращение работы библиотечных функций, выход, getenv и система <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.15Аргументы указателя к Стандартным Библиотечным функциям memcpy, memmove и memcmp должны быть указателями на квалифицированные или неполные версии совместимых типов
MISRA C:2012 Rule 21.16Аргументы указателя к Стандартной Библиотечной функции memcmp должны указать или на тип указателя, чрезвычайно тип со знаком, тип чрезвычайно без знака, по существу булев тип или на по существу перечислимый тип
MISRA C:2012 Rule 22.5Указатель на объект FILE не должен быть разыменован

Темы

Поддержка Polyspace MISRA C: 2012

Polyspace средства проверки MISRA C:2012

См. обзор поддержки Polyspace Стандарта MISRA C:2012.

Проверяйте на кодирование стандартных нарушений

Проверяйте на нарушения C++ AUTOSAR 14, CERT® C, CERT C++ MISRA C, MISRA C++, JSF AV C++ или стандарт ISO 17961 с Программой автоматического доказательства Средства поиска или Кода Ошибки.

MISRA C: 2 012 подмножеств

Подмножества цели качества программного обеспечения (C:2012)

Смотрите, какие правила MISRA C:2012 уменьшают сложность кода и сокращают количество бездоказательных регистраций Программы автоматического доказательства Кода.

Определенный MISRA C: 2 012 правил

Избегайте нарушений правил MISRA C 2012 8.x

Избегайте конфликтных объявлений или непреднамеренной модификации переменных.

Существенные типы в MISRA C: 2 012 правил 10.x

Узнать, как MISRA C: 2 012 правил 10.x обрабатывают определенные типы данных как чрезвычайно подобные.