CloneDR находит дубликаты кода, как точные копии, так и почти пропуски, в больших исходных системах, параметризованных синтаксисом языка. Он поддерживает Java, C #, COBOL, C ++, PHP и многие другие языки.
Когда он показывает параметризованную абстракцию набора найденных клонов, он по сути предлагает you рефакторинг кода с этой реализованной абстракцией (как метод, функция, класс, ...) .
Таким образом, запуск CloneDR получает список потенциальных абстракций, которые будут добавлены в ваш код, а замена экземпляров клонов вызовами на абстракцию рефакторизирует ваш код, таким образом, очищая его (несколько).
Еще более примечательно, что когда он показывает привязки параметров, используемые на каждом сайте клона, необходимом для вызова абстракции, он часто показывает случайный клонированный экземпляр, легко распознаваемый, когда связанные параметры концептуально несовместимы. Если параметр связан с переменными с именем YYYY-MM-DD, а одна из них - YY-MM-DD, тип параметра «его четырехзначный год» выглядит нарушенным, и в этом случае существует исправленное исправление Y2K. Поэтому при проверке привязок клонов часто обнаруживаются ошибки.