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

Дублирование одинаковых/похожих блоков кода

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

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

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

ВызовФункции("Строка", 10);
ВызовФункции("Строка", 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