Я использую следующие инструменты:
Оба инструмента поддерживают обнаружение дублирования кода. Но у них обоих нет возможности посоветовать вам, как реорганизовать ваш код.
JetBrains IntelliJ IDEA Ultimate имеет хороший статический анализ кода с поддержкой дублирования кода, но это не бесплатно.
http://checkstyle.sourceforge.net/ поддерживает поиск дубликатов
Большинство инструментов, перечисленных в статье Википедии Инструменты для работы с дублированным кодом, обнаруживают дубликаты во многих языках, включая Java.
Либо Simian, либо CPD от PMD. Первый поддерживает более широкий набор языков, но не является бесплатным для коммерческих проектов.
См. Наш SD Java CloneDR , инструмент для обнаружения точного и почти не повторяющегося кода в больших системах Java.
CloneDR найдет клоны кода, несмотря на изменения пробелов, разрывы строк, удаление вставок комментариев, изменение констант или идентификаторов, а в ряде случаев даже замену одного оператора другим или блоком операторов.
Он показывает, где находится каждый набор клонов, каждый отдельный клон, абстракцию клонов, имеющих их общую общность, и параметризацию абстракции, чтобы показать, как каждый экземпляр клона может быть получен из абстракции.
Он находит 10-20% клонов в большинстве систем Java.