Создать список Java-методов, которые в конечном итоге вызывают указанный метод - PullRequest
0 голосов
/ 06 июня 2019

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

Чтобы уточнить, если целевой метод является "fixme", и "fixme" вызывается "a", "b" и "c", а "a" вызывается "d" и "e"; «b» называется «d», «f», «g», «h», «i»; и «с» называется «j» и «k». Тогда "д" называется ... и т. Д. Итак, у нас есть

k calls c calls fixme
g calls b calls fixme

и так далее.

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

Итак - я ищу инструмент или стратегию, которая может выполнять эту работу, пока я лениво наблюдаю.

Мне известны такие IDE, как Eclipse, которые позволяют находить ссылки на методы, но они работают по одному методу за раз. Выполнение кода с сообщениями трассировки требует полного покрытия кода, что неосуществимо (и не надежно, поскольку я могу пропустить ни одного). Я действительно ищу какой-то статический анализатор кода с такой функцией.

1 Ответ

1 голос
/ 06 июня 2019

Затмение может сделать это.В представлении вызова eclipse (CTRL + ALT + H, когда курсор находится на методе) вы можете развернуть каждый узел, чтобы увидеть полный стек вызовов.

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

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

...