exponenta event banner

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

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

Polyspace может проверить ваш код на соответствие правилам кодирования 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.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Программа не должна содержать нарушений синтаксиса и ограничений стандарта С и не должна превышать предельных значений перевода реализации
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.2Триграфы не должны использоваться
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Имя typedef должно быть уникальным идентификатором
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Строковый литерал не должен назначаться объекту, если тип объекта не является «указателем на условный символ»
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Указатель должен указывать на согласованный тип, когда это возможно
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Отливка не должна исключать никаких противоречий или изменчивых квалификаций из типа, на который указывает указатель
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.5 sizeof оператор не должен иметь операнда, который является параметром функции, объявленным как «массив типа»
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Контур «для» должен быть хорошо сформирован
MISRA C:2012 Rule 14.3Управляющие выражения не должны быть инвариантными
MISRA C:2012 Rule 14.4Управляющее выражение оператора if и управляющее выражение оператора итерации должны иметь по существу логический тип
MISRA C:2012 Rule 15.1Оператор goto не должен использоваться
MISRA C:2012 Rule 15.2Оператор goto должен перейти к метке, объявленной позже в той же функции
MISRA C:2012 Rule 15.3Любая метка, на которую ссылается оператор goto, должна быть объявлена в том же блоке или в любом блоке, включающем оператор goto.
MISRA C:2012 Rule 15.4Для завершения любого оператора итерации должно использоваться не более одной инструкции break или goto
MISRA C:2012 Rule 15.5Функция должна иметь единственную точку выхода в конце
MISRA C:2012 Rule 15.6Тело итерационного оператора или оператора выбора должно быть составным оператором
MISRA C:2012 Rule 15.7Все, если... в противном случае, если конструкции должны завершаться оператором else
MISRA C:2012 Rule 16.1Все инструкции по переключению должны быть правильно сформированы
MISRA C:2012 Rule 16.2Метку коммутатора следует использовать только в том случае, если наиболее близким составным оператором является тело оператора коммутатора.
MISRA C:2012 Rule 16.3Заявление о безусловном разрыве прекращает действие каждого пункта о переключении
MISRA C:2012 Rule 16.4Каждый оператор коммутатора должен иметь метку по умолчанию
MISRA C:2012 Rule 16.5Метка по умолчанию должна отображаться как первая или последняя метка коммутатора инструкции switch
MISRA C:2012 Rule 16.6В каждом операторе коммутатора должно быть по крайней мере два пункта
MISRA C:2012 Rule 16.7Выражение switch не должно иметь логический тип
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Все пути выхода из функции с типом возврата non-void должны иметь явную инструкцию return с выражением
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Ключевое слово union не должно использоваться
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, exit, 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.18 size_t аргумент, переданный любой функции в <string.h> должно иметь соответствующее значение
MISRA C:2012 Rule 21.19Указатели, возвращаемые функциями стандартной библиотеки localeconv, getenv, setlocale или strerror должны использоваться только так, как если бы они имели указатель на const-квалифицированный тип
MISRA C:2012 Rule 21.20Указатель, возвращаемый функциями стандартной библиотеки asctime, ctime, gmtime, localtime, localeconv, getenv, 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-setting-функция
MISRA C:2012 Rule 22.9Значение errno должны быть протестированы против нуля после вызова errno-настройка функции
MISRA C:2012 Rule 22.10Значение errno должны проверяться только в том случае, если последней вызываемой функцией была errno-настройка функции

Темы

Поддержка MISRA со стороны Polyspace C:2012

Полиспейс MISRA C:2012 шашки

См. обзор поддержки Полиспейса для стандарта MISRA C:2012.

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

Проверьте наличие нарушений стандартов AUTOSAR C++ 14, CERT ® C, CERT C++ MISRA C, MISRA C++, JSF AV C++ или ISO-17961 с помощью средства поиска ошибок или средства проверки кода.

Подмножества MISRA C:2012

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

Узнайте, какие правила MISRA C:2012 снижают сложность кода и уменьшают количество неподтвержденных проверок в программе Code Prover.

Подмножества правил кодирования, проверенные на ранних этапах анализа

Узнайте, как настроить правила кодирования для более быстрого анализа.

Конкретные правила C:2012 MISRA

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

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

Основные типы в правилах MISRA C:2012 10.x

Узнайте, как правила C:2012 MISRA 10.x рассматривают определенные типы данных как по существу схожие.