Ответ 1
Забавный аналогичный вопрос был отправлен на SO всего несколько минут назад.
Вот ссылка с некоторыми инструментами, которые могут вам пригодиться.
Я искал в Интернете какое-то время, и мне не удалось найти бесплатные (или дешевые) инструменты/утилиты/модули, которые могут анализировать набор файлов Perl (модулей или скриптов) и дублировать или клонировать флаг или копировать/вставлять код.
Теперь мне лучше, но я использовал для копирования и вставки разделов кода повсюду. Я хотел бы очистить его и исправить свое старое дублирование кода, но немного помощи по инструментам будет оценено, поэтому мне не придется проходить через весь мой старый код с тонкой гребенкой. Плюс, ручное распознавание такого рода нарушений является склонным к ошибкам.
Забавный аналогичный вопрос был отправлен на SO всего несколько минут назад.
Вот ссылка с некоторыми инструментами, которые могут вам пригодиться.
Что вы подразумеваете под дублирующим кодом? Точные совпадения символов или семантические соответствия.
Существует несколько таких инструментов, как http://pmd.sourceforge.net/, которые могут обнаруживать повторяющийся код по совпадениям строк, этот инструмент предназначен для java, но работает сопоставление источника на обычный текст.
Если вам требуется семантическое сопоставление, например
sub A
{return 1;}
для соответствия
sub B
{
return 1;
}
Тогда вам понадобится что-то еще: (
Я использовал CCFinder в прошлом, чтобы найти фрагменты кода, которые являются дубликатами. Он работает достаточно хорошо, но имеет.. интересный интерфейс. У него нет встроенной поддержки perl, но у него есть опция открытого текста, которая должна работать как минимум для обнаружения копии и вставки. Существует решение для Windows и Ubuntu - Freeware, но не с открытым исходным кодом.
Semantic Designs создает продукт под названием Clone Dr., который, по-видимому, способен анализировать большое количество типов языков для клонированных разделов кода, Но, похоже, их бесплатная ознакомительная версия работает только на Java и Cobol.
Я просто оценил Simian. Он имеет 15-дневный бесплатный период оценки и стоит 100 долларов за одну лицензию пользователя. Он официально не поддерживает Perl, но он рассматривает их как простой текст и анализирует их в любом случае. Это сверхбыстрая утилита! И супер проста в использовании. Отчет, созданный с помощью этого инструмента, был прост и понятен. Я полностью одобряю этот инструмент. Теперь мне просто нужно поговорить с моим начальником и заставить его купить лицензию.
Здесь другая веб-страница, в которой перечислены некоторые инструменты обнаружения клонов: