Перейти к содержанию

Сравнение выражения с самим собой

Дублируются выражения в операторах сравнения. Скорее всего, в выражении допущена опечатка или не исправлен неверный "копипаст". И условие становится почти бессмысленным, т.к. выражение сравнения всегда истинно. Часто это является последствиями неверного или незаконченного "копипаста", т.е. при дублировании кода. Рекомендация - проверьте код на валидность выражений.

Примеры подобных неверных условий

Если Перем1 = Перем2 Тогда
Если Функция1(Перем1) <> Функция1(Перем1) Тогда
Если Перем1 + 10 > 10 + Перем1 Тогда
Пока Перем1 + 20 <> 20 + Перем1 Цикл

Согласно Common Weakness Enumeration потенциальные ошибки, найденные с помощью этой диагностики, классифицируются как - CWE-570 - CWE-571

См. также - MSC12-C. Detect and remove code that has no effect or is never executed - MITRE, CWE-489 - Leftover Debug Code - MITRE, CWE-570 - Expression is Always False - MITRE, CWE-571 - Expression is Always True - MISRA C:2004, 13.7 - Boolean operations whose results are invariant shall not be permitted. - MISRA C:2012, 14.3 - Controlling expressions shall not be invariant