Effective boolean types (-boolean-types)

Задайте типы данных, которые проверка правил кодирования должна рассматривать так же эффективно, как и Boolean

Описание

Укажите типы данных, которые проверка правил кодирования должна рассматривать как эффективно логические. Можно задать тип данных как эффективно логический только, если вы определили его через enum или typedef оператор в исходном коде.

Задать опцию

Пользовательский интерфейс (только для настольных продуктов): В строении проекта опция находится на узле Coding Standards & Code Metrics. Смотрите Зависимости для других опций, которые вы также должны включить.

Командная строка и файл опций: Используйте опцию -boolean-types. См. «Информация о командной строке».

Зачем использовать эту опцию

Используйте эту опцию, чтобы разрешить Polyspace® для проверки следующих правил кодирования:

  • MISRA C®2004 год и МИСРА® АРУ ПЕРЕМЕННОГО ТОКА

    Номер правилаОператор правила
    12.6Операнды логических операторов, &&, ||, и !, должен быть эффективно логическим. Выражения, которые фактически являются логическими, не должны использоваться в качестве операндов для других операторов.
    13.2Тесты значения против нуля должны быть сделаны явными, если операнд не является фактически логическим.
    15.4A 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
Значение: type1[, type2[,...]]
По умолчанию нет
Пример (Bug Finder): Polyspace Bug Finder -sources filename -misra2 required-rules -boolean-types boolean1_t,boolean2_t
Пример (Code Prover): Polyspace Code Prover -sources filename -misra2 required-rules -boolean-types boolean1_t,boolean2_t
Пример (Bug Finder Server): polyspace-bug-finder-server -sources filename -misra2 required-rules -boolean-types boolean1_t,boolean2_t
Пример (Код Prover Server): Полипространство -code-prover-server -sources filename -misra2 required-rules -boolean-types boolean1_t,boolean2_t