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

Правила в SQO-Subset1

В Polyspace® Code Prover™ следующий набор кодирования правил будет обычно сокращать количество бездоказательных результатов.

Управляйте номером

Описание

5.2

Идентификаторы во внутреннем осциллографе не должны использовать то же имя в качестве идентификатора во внешнем осциллографе, и поэтому скрыть тот идентификатор.

8.11

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

8.12

Когда массив будет объявлен с внешним рычажным устройством, его размер должен быть утвержден явным образом или задан неявно инициализацией.

11.2

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

11.3

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

12.12

Базовые битные представления значений с плавающей точкой не должны использоваться.

14.7

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

16.1

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

16.2

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

17.3

>,> =, <<= не буду применен к типам указателей кроме того, где они указывают на тот же массив.

17.6

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

18.4

Объединения не должны использоваться.

Для получения дополнительной информации об этих правилах, см. Инструкции по AGC AC MISRA для Приложения MISRA-C:2004 в Контексте Автоматической Генерации кода.

Правила в SQO-Subset2

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

Управляйте номером

Описание

5.2

Идентификаторы во внутреннем осциллографе не должны использовать то же имя в качестве идентификатора во внешнем осциллографе, и поэтому скрыть тот идентификатор.

6.3

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

8.7

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

8.11

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

8.12

Когда массив будет объявлен с внешним рычажным устройством, его размер должен быть утвержден явным образом или задан неявно инициализацией.

9.3

В списке перечислителей = построение не должно использоваться, чтобы явным образом инициализировать члены кроме первого, если все элементы не будут явным образом инициализированы

11.1

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

11.2

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

11.3

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

11.5

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

12.2

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

12.9

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

12.10

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

12.12

Базовые битные представления значений с плавающей точкой не должны использоваться.

14.7

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

16.1

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

16.2

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

16.3

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

16.8

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

16.9

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

17.3

>,> =, <<= не буду применен к типам указателей кроме того, где они указывают на тот же массив.

17.6

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

18.4

Объединения не должны использоваться.

19.9

Аргументы к подобному функции макросу не должны содержать лексемы, которые похожи на предварительную обработку директив

19.10

В определении подобного функции макроса каждый экземпляр параметра должен быть заключен в круглые скобки, если это не будет использоваться в качестве операнда # или ##

19.11

Все макро-идентификаторы в директивах препроцессору должны быть заданы перед использованием, кроме #ifdef и #ifndef директив препроцессору и заданного () оператор

19.12

Должно быть самое большее одно вхождение # или ## операторов препроцессора в одном макроопределении.

20.3

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

Примечание

Программное обеспечение Polyspace не проверяет правило 20.3 MISRA® непосредственно.

Однако можно проверять это правило путем записи ручных тупиков, которые проверяют валидность значений. Например, следующий код проверяет валидность входа, бывшего больше 1:

int my_system_library_call(int in) {assert (in>1); if random \
return -1 else return 0; }

Для получения дополнительной информации об этих правилах, см. Инструкции по AGC AC MISRA для Приложения MISRA-C:2004 в Контексте Автоматической Генерации кода.

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

Похожие темы