Присвоение в условном операторе
Этот дефект происходит, когда присвоение сделано в предикате условного выражения, такого как if
или while
.
В C и C++, один знак "равно" является присвоением не сравнение. Используя один знак "равно" в условном операторе может указать на опечатку или ошибку.
Условный оператор тестирует неправильные значения — одна операция знака "равно" присваивает значение правильного операнда к левому операнду. Затем потому что это присвоение в предикате условного выражения, проверки программы, является ли новое значение левого операнда ненулевым или не ПУСТЫМ.
Обслуживание и проблемы удобочитаемости — Даже если присвоение предназначается, кто-то чтение или обновление кода, могут неправильно истолковать присвоение как сравнение равенства вместо присвоения.
Если присвоение является ошибкой, чтобы проверять на равенство, добавьте второй знак "равно" (==
).
Если присвоение в условном операторе было намеренным, чтобы улучшить удобочитаемость, разделить присвоение и тест. Переместите присвоение вне оператора управления. В операторе управления просто протестируйте результат присвоения.
Если вы не хотите устранять проблему, добавьте комментарии в свой результат или код, чтобы избежать другого анализа. Смотрите Результаты Polyspace Адреса Через Исправления ошибок или Выравнивания.
Группа: Программирование |
Язык: C | C++ |
Значение по умолчанию: На для рукописного кода, прочь для сгенерированного кода |
Синтаксис командной строки: BAD_EQUAL_USE |
Удар: Средняя |
ID CWE: 480, 481 |
Find defects (-checkers)
| Invalid use of == (equality) operator