-boolean-types
)Задайте типы данных, которые проверка правил кодирования должна рассматривать так же эффективно, как и Boolean
Укажите типы данных, которые проверка правил кодирования должна рассматривать как эффективно логические. Можно задать тип данных как эффективно логический только, если вы определили его через enum
или typedef
оператор в исходном коде.
Пользовательский интерфейс (только для настольных продуктов): В строении проекта опция находится на узле Coding Standards & Code Metrics. Смотрите Зависимости для других опций, которые вы также должны включить.
Командная строка и файл опций: Используйте опцию -boolean-types
. См. «Информация о командной строке».
Используйте эту опцию, чтобы разрешить Polyspace® для проверки следующих правил кодирования:
MISRA C®2004 год и МИСРА® АРУ ПЕРЕМЕННОГО ТОКА
Номер правила | Оператор правила |
---|---|
12.6 | Операнды логических операторов, && , || , и ! , должен быть эффективно логическим. Выражения, которые фактически являются логическими, не должны использоваться в качестве операндов для других операторов. |
13.2 | Тесты значения против нуля должны быть сделаны явными, если операнд не является фактически логическим. |
15.4 | A switch выражение не должно представлять значение, которое эффективно является логическим. |
MISRA C: 2012
Номер правила | Оператор правила |
---|---|
10.1 | Операнды не должны быть неуместного типа |
10.3 | Значение выражения не должно присваиваться объекту с более узким существенным типом или другой категории существенного типа |
10.5 | Значение выражения не должно быть приведено к неподходящему существенному типу |
14.4 | Управляющее выражение оператора if и управляющее выражение оператора итерации должны иметь по существу логический тип. |
16.7 | Выражение switch не должно иметь по существу логического типа. |
Например, в следующем коде, если вы не задаете myBool
будучи эффективно логическим, Polyspace обнаруживает нарушение правила 14.4 MISRA C: 2012.
typedef int myBool; void func1(void); void func2(void); void func(myBool flag) { if(flag) func1(); else func2(); }
По умолчанию нет
Щелкните, чтобы добавить поле. Введите имя типа, которое вы хотите, чтобы Polyspace считал логическим.
Эта опция включена только в том случае, если выбрана одна из следующих опций:
Параметр: -boolean-types |
Значение:
|
По умолчанию нет |
Пример (Bug Finder): Polyspace Bug Finder -sources |
Пример (Code Prover):
Polyspace Code Prover -sources filename |
Пример (Bug Finder Server):
polyspace-bug-finder-server -sources filename |
Пример (Код Prover Server):
Полипространство -code-prover-server -sources filename |