Java инструмент для поиска - копировать / вставлять код в проекты - PullRequest
10 голосов
/ 10 сентября 2011

Мы унаследовали некоторый код ошибки, который имеет большое количество кода, скопированного / вставленного между проектами. Есть ли способ найти это? PMD может сделать один проект

Ответы [ 6 ]

6 голосов
/ 10 сентября 2011

Резюме

Также есть CloneDetective, Simian и Simscan. В этом документе Международной конференции по разработке программного обеспечения 2009 сравнивается их и CPD PMD.

Подробно

Один инструмент, который может работать с несколькими языками: CloneDetective (на основе ConQuat, Инструментарий непрерывной оценки качества): ABAP, ADA,Java, C #, C / C ++, Visual Basic, Cobol, PL1.

Другим инструментом является Simian, анализатор сходства , который идентифицирует дублирование в Java, C #,C, C ++, COBOL, Ruby, JSP, ASP, HTML, XML, Visual Basic, исходный код Groovy и даже обычные текстовые файлы.Он работает на JVM и .NET.

На самом деле, если вы посмотрите на .NET, есть много инструментов обнаружения вставки копий ...

SimScan, SimilarityScanner плагин Eclipse / IDEA / JBUILDER, который находит дублированные или похожие фрагменты кода в больших базах исходного кода Java.Я этого не знаю и понятия не имею, что означает «похожие фрагменты».Звучит так, будто в отдельных проектах это может выглядеть просто изолированно, но скриншоты IntelliJ выглядят изящно.

В этом документе Международной конференции по разработке программного обеспечения 2009 сравнивается CloneDetective, CPD PMD, Simianи Simscan.

Подобно тому, как искатель копирования и вставки PMD на самом деле называется CPD для «детектора копирования-вставки», этот термин используется в качестве конечной техники для поиска в Google.Другой часто используемый термин - «обнаружение клона».

2 голосов
/ 10 сентября 2011

Вы можете попробовать использовать версию PMD CPD для командной строки:

http://pmd.sourceforge.net/cpd.html

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

Simian,который является другим известным детектором копирования / вставки, имеет аналогичные возможности командной строки.

1 голос
/ 22 сентября 2011

Сонар довольно хорош для подобных вещей. Мне очень нравятся все показатели, которые вы можете иметь ...

1 голос
/ 11 сентября 2011

Если вы можете поместить эти проекты в одно рабочее пространство Eclipse, Codepro Analytix с удовольствием будет использовать их все вместе: https://code.google.com/javadevtools/codepro/doc/index.html

1 голос
/ 10 сентября 2011

См. Наш Java CloneDR , инструмент для поиска дублированного кода в больших наборах кода.

CloneDR находит точные и почти пропущенные клоны, используя структуру кода (абстрактные синтаксические деревья) в качестве ориентира, поэтому его не смущают пробелы или изменения комментариев.Для обнаруженных клонов он показывает вам экземпляры клонов и параметризованное обобщение, которое вы можете использовать в качестве основы для абстракции замещения (в Java это в значительной степени делается путем создания метода; другие языки имеют другие методы).

Другой постер ссылается на технический документ, в котором сравниваются детекторы клонов.Если вы изучите документ, ссылочный номер [1] относится к CloneDR.Авторы этой статьи не сравнивают свой детектор с CloneDR, так как их детектор использует только токены, а не более сложный метод CloneDR, который использует структуру языка.

CloneDR работает для множества языков: Java, C #,C ++, COBOL, JavaScript, PHP и многие другие.

Чтобы обрабатывать несколько проектов, достаточно указать CloneDR набор файлов во всех проектах.

0 голосов
/ 30 марта 2015

Если вы ищете плагин Eclipse, проверьте UCDetector: детектор ненужного кода

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...