Эффективные булевы типы (-boolean-types)

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

Описание

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

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

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

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

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

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

  • MISRA C®: 2004 и MISRA® AC AGC

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

  • 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[,...]]
Никакое значение по умолчанию
Пример (средство поиска ошибки): polyspace-bug-finder -sources filename -misra2 required-rules -boolean-types boolean1_t,boolean2_t
Пример (программа автоматического доказательства кода): polyspace-code-prover -sources filename -misra2 required-rules -boolean-types boolean1_t,boolean2_t
Пример (сервер средства поиска ошибки): polyspace-bug-finder-server -sources filename -misra2 required-rules -boolean-types boolean1_t,boolean2_t
Пример (сервер программы автоматического доказательства кода): polyspace-code-prover-server -sources filename -misra2 required-rules -boolean-types boolean1_t,boolean2_t