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

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

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

Ответы [ 6 ]

5 голосов
/ 22 сентября 2009

Забавный похожий вопрос был опубликован на SO всего несколько минут назад.

Вот ссылка с некоторыми инструментами, которые могут оказаться полезными.

Сравнение кодов и обнаружение плагизма

4 голосов
/ 22 сентября 2009

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

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

Если вы хотите семантическое сопоставление, например

sub A
{return 1;}

, чтобы соответствовать

sub B
{
    return 1;
}

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

2 голосов
/ 22 октября 2009

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

0 голосов
/ 22 октября 2009

Вот еще одна веб-страница, на которой перечислены некоторые инструменты обнаружения клонов:

http://sel.ics.es.osaka -u.ac.jp / cdtools / индекс-e.html

0 голосов
/ 23 сентября 2009

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

0 голосов
/ 22 сентября 2009

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

...