MISRA C:2012 Rule 14.3

Управляющие выражения не должны быть инвариантными

Описание

Определение правила

Управляющие выражения не должны быть инвариантными.

Объяснение

Если управляющее выражение, для примера if условие, имеет постоянное значение, неизменяющееся значение может указывать на ошибку программирования.

Реализация Polyspace

Условия флага шашки в if или while операторы или условия, которые появляются как первые операнды троичных операторов (?:) если условия инвариантны, например, всегда вычислять на true или false.

Polyspace® Bug Finder™ и Polyspace Code Prover™ по-разному проверить это правило кодирования. Анализы могут привести к различным результатам.

Polyspace Bug Finder помечает некоторые нарушения MISRA C® 14.3 через Dead code и Useless if шашки.

Polyspace Code Prover не использует серый код, чтобы отметить нарушения MISRA C 14.3. В Code Prover также можно увидеть различие в результатах, основанную на вашем выборе для опции Verification level (-to) (Polyspace Code Prover). Смотрите раздел «Проверка на нарушения стандартов кодирования».

Дополнительное сообщение в отчете

  • Логические операции, результаты которых инвариантны, не допускаются.

  • Выражение всегда верно.

  • Выражение всегда ложно.

  • Управляющие выражения не должны быть инвариантными.

Поиск и устранение проблем

Если вы ожидаете нарушения правил, но не видите его, обратитесь к разделу «Стандартные нарушения кодирования не отображаются».

Проверяйте информацию

Группа: Выражения оператора управления
Категория: Требуемая
Категория AGC: Требуется