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

Одинаковый код во взаимоисключаемых ветках ветвления кода

Дублируются блоки в разных ветках оператора "Если", оператора Попытка...Исключение и условного оператора "?"

Часто это является последствиями неверного или незаконченного "копипаста".

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

Если ПервоеУсловие() Тогда
    ВызовФункции("Строка", 10); // ошибка
ИначеЕсли ВтороеУсловие() Тогда
    ВызовФункции("Строка", 10); // ошибка
КонецЕсли;

или

Попытка
    ДругаяФункция(); // ошибка
Исключение
    ДругаяФункция(); // ошибка
КонецПопытки;

или

Выражение = ?(Условие, А + 2, А+2); // ошибка

или более сложный вариант дублирования

Если ПервоеУсловие() Тогда
    ДругаяФункция(); // ошибка
ИначеЕсли ВтороеУсловие() Тогда
    А = ВызовФункции(ВложенныйВызов("Строка", 1)); // ошибка
ИначеЕсли ТретьеУсловие() Тогда
    ДругаяФункция(); // ошибка
Иначе
    А = ВызовФункции(ВложенныйВызов("Строка", 1)); // ошибка
КонецЕсли;

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

См. также

Экранирование кода

// sonar:EqualBlock:off
// sonar:EqualBlock:on