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

Эти подмножества MISRA® C:2012 руководства могут оказать прямое или косвенное влияние на точность вашего Polyspace® результаты. При настройке проверки правил кодирования можно выбрать эти подмножества.

Инструкции по SQO-Subset1

Следующий набор руководств по кодированию C:2012 MISRA обычно уменьшает количество недоказанных результатов в Polyspace Code Prover™.

ПравилоОписание
8.8

Спецификатор класса памяти должен использоваться во всех декларациях объектов и функций, имеющих внутреннее редактирование

8.11

Когда массив с внешним редактированием объявлен, его размер должен быть явно задан

8.13

Указатель должен указывать на const-квалифицированный тип, когда это возможно

11.1

Преобразование не должно выполняться между указателем на функцию и любым другим типом

11.2

Преобразование не должно выполняться между указателем на неполный тип и любым другим типом

11.4

Преобразование не должно выполняться между указателем на объект и целый тип

11.5

Преобразование не должно выполняться из указателя в пустой в указатель на объект

11.6

Приведение не должно выполняться между указателем на пустоту и арифметическим типом

11.7

Приведение не должно выполняться между указателем на объект и нецелочисленным арифметическим типом

14.1

Счетчик цикла не должен иметь по существу плавающего типа

14.2

A для цикла должна быть хорошо сформирована

15.1

Оператор goto не должен использоваться

15.2

Оператор goto должен перейти к метке, объявленной позже в той же функции

15.3

Любая метка, на которую ссылается оператор goto, должна быть объявлена в том же блоке или в любом блоке, содержащем оператор goto

15.5

Функция должна иметь одну точку выхода в конце

17.1

Функции < starg.h > не должны использоваться

17.2

Функции не должны вызывать себя, прямо или косвенно

18.3

Реляционные операторы >, > =, < и < = не должны применяться к объектам типа указателя, кроме тех случаев, когда они указывают на один и тот же объект

18.4

Операторы +, -, + = и - = не должны применяться к выражению типа указателя

18.5

Объявления должны содержать не более двух уровней вложения указателей

18.6

Адрес объекта с автоматическим хранением не должен копироваться в другой объект, сохраняющийся после прекращения существования первого объекта

19.2

Ключевое слово объединения не должно использоваться

21.3

Функции выделения и удаления памяти < stdlib.h > не должны использоваться

Инструкции по SQO-Subset2

Хорошие методы проекта обычно приводят к меньшей сложности кода, что может уменьшить количество недоказанных результатов в Polyspace Code Prover. Следующий набор правил кодирования обеспечивает применение передовых методов проекта. The SQO-subset2 опция проверяет правила в SQO-subset1 и некоторые дополнительные правила.

ПравилоОписание
8.8

Спецификатор класса памяти должен использоваться во всех декларациях объектов и функций, имеющих внутреннее редактирование

8.11

Когда массив с внешним редактированием объявлен, его размер должен быть явно задан

8.13

Указатель должен указывать на const-квалифицированный тип, когда это возможно

11.1

Преобразование не должно выполняться между указателем на функцию и любым другим типом

11.2

Преобразование не должно выполняться между указателем на неполный тип и любым другим типом

11.4

Преобразование не должно выполняться между указателем на объект и целый тип

11.5

Преобразование не должно выполняться из указателя в пустой в указатель на объект

11.6

Приведение не должно выполняться между указателем на пустоту и арифметическим типом

11.7

Приведение не должно выполняться между указателем на объект и нецелочисленным арифметическим типом

11.8

Приведение не должно удалять какую-либо несовпадающую или летучую проверку из типа, на который указывает указатель

12.1

Приоритет операторов в выражениях должен быть сделан явным

12.3

Оператор запятыми не должен использоваться

13.2

Значение выражения и его стойких побочных эффектов должно быть одинаковым при всех разрешенных порядках

13.4

Результат оператора назначения не должен использоваться

14.1

Счетчик цикла не должен иметь по существу плавающего типа

14.2

A для цикла должна быть хорошо сформирована

14.4

Управляющее выражение оператора if и управляющее выражение оператора итерации должны иметь по существу логический тип

15.1

Оператор goto не должен использоваться

15.2

Оператор goto должен перейти к метке, объявленной позже в той же функции

15.3

Любая метка, на которую ссылается оператор goto, должна быть объявлена в том же блоке или в любом блоке, содержащем оператор goto

15.5

Функция должна иметь одну точку выхода в конце

15.6

Текст итерации- оператора или оператора о выборе должен быть компаунд- оператором

15.7

Все, если... другое, если конструкции должны быть завершены оператором else

16.4

Каждый оператор switch должен иметь метку по умолчанию

16.5

Метка по умолчанию должна отображаться как первая или последняя метка switch оператора switch

17.1

Функции < starg.h > не должны использоваться

17.2

Функции не должны вызывать себя, прямо или косвенно

17.4

Все выходные пути из функции с непустым типом возврата должны иметь явный оператор возврата с выражением

18.3

Реляционные операторы >, > =, < и < = не должны применяться к объектам типа указателя, кроме тех случаев, когда они указывают на один и тот же объект

18.4

Операторы +, -, + = и - = не должны применяться к выражению типа указателя

18.5

Объявления должны содержать не более двух уровней вложения указателей

18.6

Адрес объекта с автоматическим хранением не должен копироваться в другой объект, сохраняющийся после прекращения существования первого объекта

19.2

Ключевое слово объединения не должно использоваться

20.4

Макрос не должен быть определен с таким же именем, как ключевое слово

20.6

Лексемы, которые выглядят как директива предварительной обработки, не должны происходить в макросе аргумента

20.7

Выражения, следующие из расширения макро- параметры, заключаются в круглые скобки

20.9

Все идентификаторы, используемые в управляющем выражении директивы предварительной обработки # if или # elif, должны быть # defined d перед оценкой

20.11

Макропараметр, непосредственно следующий за оператором #, не должен немедленно сопровождаться оператором # #

21.3

Функции выделения и удаления памяти < stdlib.h > не должны использоваться

См. также

Похожие темы