Найти неиспользуемый код в модульном проекте Maven

Мне нужно очистить старый проект, и общие знания здесь состоят в том, что проект содержит много неиспользованного кода, который мы могли бы удалить. Это сэкономит некоторые головные боли и облегчит обслуживание.

Я нашел плагин Eclipse Core Tools, который выглядит как отличный инструмент, но в нашем случае у нас есть проект Maven2, разделенный на 3 модуля. Кажется, я не могу запустить "найти неопубликованных членов" в родительском проекте, и когда я запускаю его на одном из модулей, он полностью игнорирует тот факт, что другие модули могут использовать некоторые из публичных пользователей...

Кто-нибудь преодолел эту проблему? Или нашел другой способ сделать это?

Спасибо.

Ответ 1

когда я запускаю его на одном из модулей, он полностью игнорирует тот факт, что другие модули могут использовать некоторые открытые члены...

Да, в этом проблема, и поэтому нет реального детерминированного способа найти неиспользуемый код, как напомнил @cletus в предыдущем ответе.

Имея это в виду, такие инструменты, как PMD (и его правило неиспользуемого кода), Findbugs могут помочь в любом случае. IDE, такие как IntelliJ (проверки кода Java полностью доступны в Community Edition) и Eclipse также имеют хорошую поддержку для этого.

Для IntelliJ, посмотрите на Глобальную проверку неиспользованной декларации:

Благодаря улучшениям внутренних индексов механизма анализа кода Intellij IDEA Maia сможет мгновенно выделить некоторые классы, методы и поля java, которые не используются во всем проекте.

Для Eclipse есть плагин UCDetector:

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

alt text

Но, признаюсь, я не уверен, что какое-либо из этих решений действительно будет работать в разных модулях. В этом случае я бы предложил поместить весь код в один проект "уборщика" (да, это уродливо, но хорошо...) и запустить на нем инструменты (и очистить модули на основе полученных результатов).

Ответ 2

Я использовал плагин Core Tools для поиска неиспользуемого кода для многих разных модулей maven. Путь сборки для каждого из проектов должен быть настроен правильно, чтобы Eclipse знал, что существуют зависимости между проектами. Если вы импортируете проекты с помощью плагина m2eclipse, он автоматически установит их.

Я думаю, что плагин Core Tools работает в том, что он автоматизирует процесс, который выполняет представление "Иерархия вызовов". Выберите метод и запустите "Иерархия вызовов" (ctrl-alt-H), если нет вызывающих абонентов, тогда Core Tools должен отметить метод как невостребованный.