Найти неиспользуемый код в модульном проекте Maven - PullRequest
10 голосов
/ 11 февраля 2010

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

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

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

Спасибо.

Ответы [ 2 ]

11 голосов
/ 11 февраля 2010

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

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

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

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

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

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

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

alt text

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

1 голос
/ 11 февраля 2010

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

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

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