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

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

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

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

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

Процедура Процедура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

См. также - Правило Дублирование одинаковых/похожих блоков кода - Правило Одинаковый код во взаимоисключаемых ветках ветвления кода - Правило Одинаковые условия в последовательности вида "Если (....) ИначеЕсли (....) ИначеЕсли (....)". - MSC12-C. Detect and remove code that has no effect or is never executed - MITRE, CWE-489 - Leftover Debug Code