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 нарушений. В Программе автоматического доказательства Кода можно также видеть различие в результатах на основе выбора для опции Verification level (-to). Смотрите проверку на кодирование стандартных нарушений.

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

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

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

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

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

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

Если вы ожидаете нарушение правила, но не видите его, обратитесь к Кодированию Стандартных Нарушений, Не Отображенных.

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

Группа: управляйте выражениями оператора
Категория: необходимый
Категория AGC: необходимый