Как найти код копирования/вставки (дубликат, клонирование) в Perl?

Я искал в Интернете какое-то время, и мне не удалось найти бесплатные (или дешевые) инструменты/утилиты/модули, которые могут анализировать набор файлов Perl (модулей или скриптов) и дублировать или клонировать флаг или копировать/вставлять код.

Теперь мне лучше, но я использовал для копирования и вставки разделов кода повсюду. Я хотел бы очистить его и исправить свое старое дублирование кода, но немного помощи по инструментам будет оценено, поэтому мне не придется проходить через весь мой старый код с тонкой гребенкой. Плюс, ручное распознавание такого рода нарушений является склонным к ошибкам.

Ответы

Ответ 2

Что вы подразумеваете под дублирующим кодом? Точные совпадения символов или семантические соответствия.

Существует несколько таких инструментов, как http://pmd.sourceforge.net/, которые могут обнаруживать повторяющийся код по совпадениям строк, этот инструмент предназначен для java, но работает сопоставление источника на обычный текст.

Если вам требуется семантическое сопоставление, например

sub A
{return 1;}

для соответствия

sub B
{
    return 1;
}

Тогда вам понадобится что-то еще: (

Ответ 3

Я использовал CCFinder в прошлом, чтобы найти фрагменты кода, которые являются дубликатами. Он работает достаточно хорошо, но имеет.. интересный интерфейс. У него нет встроенной поддержки perl, но у него есть опция открытого текста, которая должна работать как минимум для обнаружения копии и вставки. Существует решение для Windows и Ubuntu - Freeware, но не с открытым исходным кодом.

Ответ 4

Semantic Designs создает продукт под названием Clone Dr., который, по-видимому, способен анализировать большое количество типов языков для клонированных разделов кода, Но, похоже, их бесплатная ознакомительная версия работает только на Java и Cobol.

Ответ 5

Я просто оценил Simian. Он имеет 15-дневный бесплатный период оценки и стоит 100 долларов за одну лицензию пользователя. Он официально не поддерживает Perl, но он рассматривает их как простой текст и анализирует их в любом случае. Это сверхбыстрая утилита! И супер проста в использовании. Отчет, созданный с помощью этого инструмента, был прост и понятен. Я полностью одобряю этот инструмент. Теперь мне просто нужно поговорить с моим начальником и заставить его купить лицензию.