См. Наш CloneDR инструмент для поиска точных и почти пропущенных блоков дублированного кода в больших объемах исходного кода.
CloneDR работает, анализируя исходный текст, используя внешний интерфейс качества компилятора, создавая структуры данных компилятора ("AST"), которые представляют код, и сопоставляя деревья. Это означает, что он может найти дубликаты, несмотря на макеты, разрывы строк или комментарии. Процесс сопоставления может найти блоки кода, которые похожи в том смысле, что могут быть параметризованы; он легко находит похожие блоки с переименованными переменными или с операторами или блоками кода, которые были заменены.
Существуют версии для многих языков, включая C #. Пример отчета об обнаружении клона C # можно найти на веб-сайте.
CloneDR не является "предварительным просмотром разработки". Я написал одну оригинальную статью о том, как сделать это хорошо еще в 1998 году, и с тех пор я разрабатываю CloneDR; см. Обнаружение клона с использованием абстрактных синтаксических деревьев . (Детектор клонов Microsoft выполняет основанное на токене, а не обнаружение клонов на основе дерева и выдает, IMHO, ответы, которые не так хороши; на самом деле такие детекторы в стиле токенов почему я написал статью) .