Директивы по компиляции и разработке кода
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.6 | typedefs которые указывают на размер и заметность, следует использовать вместо базовых числовых типов |
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 | Динамическое выделение памяти не должно использоваться |
Стандарт C Окружающая среда: правила 1.1-1.3
Неиспользованный кодекс: Правила 2.1-2.7
Комментарии: Правила 3.1-3.2
Наборы символов и лексические условные обозначения: Правила 4.1-4.2
Идентификаторы: Правила 5.1-5.9
Литералы и константы: Правила 7.1-7.4
Декларации и определения: правила 8.1-8.14
Инициализация: Правила 9.1-9.5
Модель основного типа: правила 10.1-10.8
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 | Значение составного выражения не должно быть отнесено к другой категории существенного типа или более широкому существенному типу. |
Преобразование типа указателя: Правила 11.1-11.9
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 должен быть единственной разрешенной формой константы целочисленного нулевого указателя |
Выражения: правила 12.1-12.5
Побочные эффекты: Правила 13.1-13.6
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 не должен содержать выражение, которое имеет потенциальные побочные эффекты |
Выражения контрольного заявления: правила 14.1-14.4
Поток управления: Правила 15.1-15.7
Инструкции по переключению: Правила 16.1-16.7
Функции: Правила 17.1-17.8
Указатели и массивы: правила 18.1-18.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 | Типы массивов переменной длины не должны использоваться |
Перекрывающееся хранилище: Правила 19.1-19.2
Директивы по предварительной обработке: Правила 20.1-20.14
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, с которыми они связаны. |
Стандартные библиотеки: Правила 21.1-21.12 и 21.15-21.16
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.15 | Аргументы указателя на функции стандартной библиотеки memcpy, memmove и memcmp должны быть указателями на квалифицированные или неквалифицированные версии совместимых типов |
MISRA C:2012 Rule 21.16 | Аргументы указателя на функцию «Стандартная библиотека» memcmp указывает на тип указателя, по существу подписанный тип, по существу неподписанный тип, по существу логический тип или по существу перечисленный тип |