Обнаружение круфта проекта Java

Я пользователь NetBeans 6.5 и ищу способ создания списка методов / классов, которые не используются в заданной группе проектов.

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

Я хочу взглянуть на то, что работает вне netbeans, если оно генерирует список беспорядочных методов / классов.

Спасибо.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
9
0
458
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Вы можете включить неиспользованные правила кода в PMD (есть плагин NetBeans), а затем запустить PMD для всего проекта.

Кажется, что это частичное решение, но оно позволяет обнаруживать только частные методы / поля.

Allain Lalonde 05.01.2009 17:53

Я собирался опубликовать то же самое, посмотрев на PMD. У меня также была такая же проблема, в прошлом, имея дело с устаревшими кодовыми базами, я обнаруживал только неиспользуемые общедоступные методы (не используемые в кодовой базе) через злую смесь grep, python и т. д. И т. Д. Пожалуйста, опубликуйте, если вы знаете о каких-либо других инструменты.

Steve B. 05.01.2009 18:01

Предполагается, что общедоступные методы используются вне вашего кода (это ваш API), поэтому PMD их не помечает.

Bill the Lizard 05.01.2009 18:04

Вы ведь действительно не хотите избавляться от общедоступных методов? Это может (и, вероятно, сломает) чужой код.

Bill the Lizard 05.01.2009 18:06

Я действительно делаю. Весь код мой собственный. Объявление метода / класса общедоступным - это единственный способ получить к нему доступ из другого пакета в том же проекте. Хотелось бы иметь ключевое слово "внутреннее" в java, но увы ...

Allain Lalonde 05.01.2009 18:16

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

Steve B. 05.01.2009 18:26

Это немного надумано, но не могли бы вы написать сценарий, чтобы изменить все общедоступные методы на частные, просто для выполнения этих правил PMD? Вам придется переименовать все ваши в настоящее время частные методы, чтобы вы могли устранить ущерб.

Bill the Lizard 05.01.2009 18:46

Это хорошее предложение, хотя на самом деле оно может быть немного сложнее, поскольку с достаточно запутанной кодовой базой вы можете фактически иметь полностью мертвые цепочки методов - больше как неиспользуемые объекты в работающей JVM, с ними нужно работать как с графом.

Steve B. 05.01.2009 19:04

Разве вы не получили бы хотя бы начало мертвой цепи? Затем снова запустите PMD и повторяйте, пока не удалите все звенья в цепочке. Однако я могу представить, что рекурсивные вызовы могут не обрабатываться.

Bill the Lizard 05.01.2009 19:29
Ответ принят как подходящий

Обфускаторы, такие как proguard, могут уменьшить ваши jar-файлы, удалив неиспользуемые методы / классы. Возможно, удастся получить подробный вывод, содержащий список удаленных (следовательно, неиспользуемых) классов / методов.

Здесь вы можете найти больше информации о поиске мертвого кода с помощью proguard.

Есть несколько инструментов, которые вы можете использовать для поиска этих и других проблем:

Я активно ими пользуюсь. Отличные инструменты. Однако они не решают проблему в случае общедоступных методов / классов.

Allain Lalonde 06.01.2009 17:01

Используйте инструмент тестового покрытия для инструментария вашей кодовой базы, а затем запустите само приложение, а не тесты.

Эмма и Eclemma предоставят вам хорошие отчеты о том, какой процент классов запускается для каждого конкретного запуска кода.

Другие вопросы по теме