Когда я изучаю сложные Java-коды, которые я не писал, я регулярно записываю в блокноте стеки вызовов некоторых ресурсов, которые я нахожу интересными для данной проблемы. Эти ресурсы обычно являются методами или константами.
Вот пример:
CONSTANT_NAME
com.company.common.context.business.Context.methodName1()
com.company.domain.web.controller.subdomain1.BusinessController.handleRequest(HttpServletRequest, HttpServletResponse)
com.company.domain.web.controller.subdomain2.BusinessController.handleRequest(HttpServletRequest, HttpServletResponse)
com.company.domain.web.controller.subdomain3.BusinessController.handleRequest(HttpServletRequest, HttpServletResponse)
com.company.common.context.business.Context.methodName2()
com.company.domain.web.controller.subdomain1.BusinessController.handleRequest(HttpServletRequest, HttpServletResponse)
com.company.domain.web.controller.subdomain3.BusinessController.handleRequest(HttpServletRequest, HttpServletResponse)
com.company.domain.web.controller.subdomain2.BusinessController.handleRequest(HttpServletRequest, HttpServletResponse)
com.company.common.context.business.Context.methodName3(Long, boolean)
com.company.domain.web.controller.services.ClassName.onSubmit(HttpServletRequest, HttpServletResponse, Object, BindException)
Для этого я щелкаю правой кнопкой мыши в Eclipse константу / метод и выбираю «Ссылки», «Рабочая область» (сочетание клавиш CTRL + Shift + G). На вкладке «Поиск» я щелкаю правой кнопкой мыши результат и выбираю «Копировать полное имя». Затем я копирую его в блокнот с подходящей таблицей (нет таблицы для первой переменной / метода и дополнительной таблицы для каждого уровня вызова). Если метод вызывается двумя частями кода, то же табуляция добавляется для полных имен двух вызывающих методов.
Таким образом, результат выглядит как трассировки стека Java.
Почему я это делаю? Потому что я думаю, что он дает много информации о некоторых ресурсах и позволяет узнать, в каком контексте исполнения они используются. Конечно, это не работает с ресурсами конфигурации (например, с файлами конфигурации xml).
Для больших программ эта манипуляция может стать громоздкой.
Если я использую режим отладки в Eclipse, я могу получить интересную трассировку стека при достижении точки останова, но это только для одного случая, и я хочу больше "абстракции", когда я изучаю коды.
Вы знаете, могут ли какие-то инструменты сделать такую работу для меня?
Спасибо!
РЕДАКТИРОВАТЬ: Лучший способ найти это:
- создать «открытую иерархию вызовов» для константы / метода / переменной.
- разверните все элементы с помощью стрелок на клавиатуре в представлении «Иерархия вызовов»
- щелкните правой кнопкой мыши корневой элемент и выберите «Копировать расширенную иерархию».
Затем у вас есть стеки вызовов, которые вы можете изучать в блокноте