Я пользователь NetBeans 6.5 и ищу способ создания списка методов / классов, которые не используются в заданной группе проектов.
Я знаю, что могу щелкнуть правой кнопкой мыши по каждому методу и выбрать «Найти использование», но я ищу автоматизацию этого процесса.
Я хочу взглянуть на то, что работает вне netbeans, если оно генерирует список беспорядочных методов / классов.
Спасибо.




Вы можете включить неиспользованные правила кода в PMD (есть плагин NetBeans), а затем запустить PMD для всего проекта.
Я собирался опубликовать то же самое, посмотрев на PMD. У меня также была такая же проблема, в прошлом, имея дело с устаревшими кодовыми базами, я обнаруживал только неиспользуемые общедоступные методы (не используемые в кодовой базе) через злую смесь grep, python и т. д. И т. Д. Пожалуйста, опубликуйте, если вы знаете о каких-либо других инструменты.
Предполагается, что общедоступные методы используются вне вашего кода (это ваш API), поэтому PMD их не помечает.
Вы ведь действительно не хотите избавляться от общедоступных методов? Это может (и, вероятно, сломает) чужой код.
Я действительно делаю. Весь код мой собственный. Объявление метода / класса общедоступным - это единственный способ получить к нему доступ из другого пакета в том же проекте. Хотелось бы иметь ключевое слово "внутреннее" в java, но увы ...
Бывают случаи, когда вы имеете дело с устаревшей кодовой базой, все ее использование является внутренним по отношению к кодовой базе, но есть общедоступные методы, о которых давно забыли.
Это немного надумано, но не могли бы вы написать сценарий, чтобы изменить все общедоступные методы на частные, просто для выполнения этих правил PMD? Вам придется переименовать все ваши в настоящее время частные методы, чтобы вы могли устранить ущерб.
Это хорошее предложение, хотя на самом деле оно может быть немного сложнее, поскольку с достаточно запутанной кодовой базой вы можете фактически иметь полностью мертвые цепочки методов - больше как неиспользуемые объекты в работающей JVM, с ними нужно работать как с графом.
Разве вы не получили бы хотя бы начало мертвой цепи? Затем снова запустите PMD и повторяйте, пока не удалите все звенья в цепочке. Однако я могу представить, что рекурсивные вызовы могут не обрабатываться.
Обфускаторы, такие как proguard, могут уменьшить ваши jar-файлы, удалив неиспользуемые методы / классы. Возможно, удастся получить подробный вывод, содержащий список удаленных (следовательно, неиспользуемых) классов / методов.
Здесь вы можете найти больше информации о поиске мертвого кода с помощью proguard.
Есть несколько инструментов, которые вы можете использовать для поиска этих и других проблем:
Я активно ими пользуюсь. Отличные инструменты. Однако они не решают проблему в случае общедоступных методов / классов.
Кажется, что это частичное решение, но оно позволяет обнаруживать только частные методы / поля.