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

Совпадающие/одинаковые тела методов

В коде найдены методы с абсолютно одинаковым содержимым. Часто это является последствиями неверного или незаконченного "копипаста". Код с дублями частенько сложнее изучать и понимать, чем код без дублей.

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

Примеры подозрительного кода

Процедура Процедура1(Знач Парам1, Парам2) // дубль
    Пока Истина Цикл 
        ВызовМетода(1, "какой-то текст");
        А = 10;
    КонецЦикла;
КонецПроцедуры

Процедура Процедура2(Знач Парам1, Парам2) // дубль
    Пока Истина Цикл 
        ВызовМетода(1, "какой-то текст");
        А = 10;
    КонецЦикла;
КонецПроцедуры

Более читабельный и понимаемый вариант

Процедура Процедура1(Знач Парам1, Парам2)
  ОсновнаяПроцедура(Парам1, Парам2);
КонецПроцедуры

Процедура Процедура2(Знач Парам1, Парам2)
  ОсновнаяПроцедура(Парам1, Парам2);
КонецПроцедуры

Процедура ОсновнаяПроцедура(Знач Парам1, Парам2)
    Пока Истина Цикл 
        ВызовМетода(1, "какой-то текст");
        А = 10;
    КонецЦикла;
КонецПроцедуры

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

См. также

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

// sonar:EqualMethodBlocks:off
// sonar:EqualMethodBlocks:on