-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 |