Effective boolean types (-boolean-types)

Задайте типы данных, которые кодирующий средство проверки правила должен обработать как эффективно булев

Описание

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

Установите опцию

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

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

Почему использование эта опция

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

  • MISRA C®: 2004 и MISRA® AC AGC

    Управляйте номеромУправляйте оператором
    12.6Операнды логических операторов, &&, ||, и !, должно быть эффективно булевым. Выражения, которые являются эффективно булевыми, не должны использоваться в качестве операндов к другим операторам.
    13.2Тесты значения против нуля должны быть сделаны явными, если операнд не является эффективно булевым.
    15.4switch выражение не должно представлять значение, которое является эффективно булевым.

  • MISRA C: 2012

    Управляйте номеромУправляйте оператором
    10.1Операнды не должны иметь несоответствующего существенного типа
    10.3Значение выражения не должно быть присвоено объекту с более узким существенным типом или различной существенной категории типа
    10.5Значение выражения не должно быть брошено к несоответствующему существенному типу
    14.4Выражение управления оператора if и выражение управления оператора цикла должны иметь по существу булев тип.
    16.7Выражение переключателя не должно иметь по существу булева типа.

Например, в следующем коде, если вы не задаете myBool как эффективно булевская переменная, Polyspace обнаруживает нарушение MISRA C: 2 012 правил 14.4.

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 - источники filename - необходимые правила misra2 - булевы типы boolean1_t, boolean2_t
Пример (Программа автоматического доказательства Кода): Polyspace Code Prover - источники filename - необходимые правила misra2 - булевы типы boolean1_t, boolean2_t
Пример (Сервер Bug Finder): сервер средства поиска ошибки полипробела - источники filename - необходимые правила misra2 - булевы типы boolean1_t, boolean2_t
Пример (Сервер Программы автоматического доказательства Кода): сервер программы автоматического доказательства полипробела кода - источники filename - необходимые правила misra2 - булевы типы boolean1_t, boolean2_t