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

StackOverflow https://stackoverflow.com/questions/1461873

Вопрос

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

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

Это было полезно?

Решение

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

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

Сравнение кода и выявление плагиата

Другие советы

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

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

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

sub A
{return 1;}

соответствовать

sub B
{
    return 1;
}

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

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

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

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

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

http://sel.ics.es.osaka-u.ac.jp/cdtools/index-e.html

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top