exponenta event banner

Эффективные логические типы (-boolean-types)

Укажите типы данных, которые средство проверки правил кодирования должно считать логическими

Описание

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

Задать опцию

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

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

Зачем использовать этот параметр

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

  • MISRA C ®: 2004 и MISRA ® AC AGC

    Номер правилаИнструкция правила
    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[,...]]
По умолчанию нет
Пример (поиск ошибок): 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