Ответ 1
Проверьте Atomiq. Он находит код, который является дубликатом, который является простым для извлечения в одно местоположение.
К сожалению, проект, над которым я работал в последнее время, имеет большой объем кода для копирования и вставки даже в отдельных файлах. Существуют ли какие-либо инструменты или методы, которые могут обнаружить дублирование или почти дублирование в одном файле? Я имею Beyond Compare 3, и он отлично подходит для сравнения отдельных файлов, но я затрудняюсь сравнивать отдельные файлы.
Спасибо заранее.
Edit:
Спасибо за все замечательные инструменты! Я определенно проведу их.
Этот проект является проектом ASP.NET/C#, но я работаю с различными языками, включая Java; Мне интересно, какие инструменты лучше всего (для любого языка), чтобы удалить дублирование.
Проверьте Atomiq. Он находит код, который является дубликатом, который является простым для извлечения в одно местоположение.
Если вы используете Eclipse, вы можете использовать детектор копирования (CPD) https://olex.openlogic.com/packages/cpd.
См. SD CloneDR, инструмент для обнаружения кода копирования-вставки и внутри нескольких файлов. Он обнаруживает точные копии, копии, которые были переформатированы, и копии, близкие к пропуску, с разными идентификаторами, литералами и даже разными выражениями.
CloneDR обрабатывает многие языки, включая Java (1.4.1.5.1.6) и С#, особенно до С# 4.0. Вы можете просмотреть отчеты об обнаружении клонирования образцов на веб-сайте, в том числе один для С#.
Вы не говорите, какой язык вы используете, что повлияет на то, какие инструменты вы можете использовать.
Для Python существует CloneDigger. Он также поддерживает Java, но я этого не пробовал. Он может найти дублирование кода как с одним файлом, так и между файлами, и дает результат в виде отчета типа diff в HTML.
Resharper делает это автоматически - это предполагает, когда он думает, что код должен быть извлечен в метод, и сделает для вас извлечение
Откажитесь от PMD, как только вы его настроили (это довольно просто) вы можете запустить детектор копирования папок, чтобы найти дубликат кода.
Один с некоторыми навыками Office может сделать следующую последовательность за 1 минуту:
В этот момент ключевые слова для дубликатов будут уже хорошо обнаружены. Но идти дальше
Существует инструмент анализа, называемый Simian, который я еще не пробовал. Предположительно, он может запускаться на любом виде текста и указывать дублированные элементы. Его можно использовать через интерфейс командной строки.
Другой вариант, аналогичный описанному выше, но с другой цепочкой инструментов: https://www.npmjs.com/package/jscpd