Сравнение выражения с самим собой
Дублируются выражения в операторах сравнения. Скорее всего, в выражении допущена опечатка или не исправлен неверный "копипаст". И условие становится почти бессмысленным, т.к. выражение сравнения всегда истинно. Часто это является последствиями неверного или незаконченного "копипаста", т.е. при дублировании кода. Рекомендация - проверьте код на валидность выражений.
Примеры подобных неверных условий
Если Перем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
Экранирование кода
// sonar:SelfCompare:off
// sonar:SelfCompare:on