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