Ответ 1
когда я запускаю его на одном из модулей, он полностью игнорирует тот факт, что другие модули могут использовать некоторые открытые члены...
Да, в этом проблема, и поэтому нет реального детерминированного способа найти неиспользуемый код, как напомнил @cletus в предыдущем ответе.
Имея это в виду, такие инструменты, как PMD (и его правило неиспользуемого кода), Findbugs могут помочь в любом случае. IDE, такие как IntelliJ (проверки кода Java полностью доступны в Community Edition) и Eclipse также имеют хорошую поддержку для этого.
Для IntelliJ, посмотрите на Глобальную проверку неиспользованной декларации:
Благодаря улучшениям внутренних индексов механизма анализа кода Intellij IDEA Maia сможет мгновенно выделить некоторые классы, методы и поля java, которые не используются во всем проекте.
Для Eclipse есть плагин UCDetector:
UCDetector (детектор ненужного кода) - это подключаемый модуль с открытым исходным кодом для поиска ненужного (мертвого) общедоступного кода Java. Он также пытается сделать код окончательным, защищенным или приватным.
Но, признаюсь, я не уверен, что какое-либо из этих решений действительно будет работать в разных модулях. В этом случае я бы предложил поместить весь код в один проект "уборщика" (да, это уродливо, но хорошо...) и запустить на нем инструменты (и очистить модули на основе полученных результатов).