Как узнать в Eclipse, вызывается ли определенный метод из другого метода прямо или косвенно? - PullRequest
7 голосов
/ 15 сентября 2010

Как узнать в Eclipse, если какой-то метод потенциально вызывается или доступен (прямо или косвенно) из другого метода?

Предположим, я хочу провести рефакторинг A.one(), на который может отрицательно повлиять побочный эффект в D.four(). Поэтому я хотел бы узнать, может ли D.four() потенциально вызываться из A.one(). Я вижу, какие методы вызываются из A.one() с использованием иерархии вызовов. Я могу перемещаться по дереву вызовов и в конечном итоге обнаружить, что A.one() вызывает B.two(), что вызывает C.three(), что вызывает D.four().

Есть ли в Eclipse способ сделать этот поиск каким-то автоматическим?

пс. В диалоге иерархии вызовов есть параметр «Фильтры ...», но он скрывает только совпадающие имена.

Ответы [ 3 ]

9 голосов
/ 15 сентября 2010

Это модифицированная версия того, как вы (@lexicore) нашли, что включает в себя значительно меньшее нажатие кнопки (мои изменения в жирный ):

  • Открыть иерархию вызовов для A.one (), Показать иерархию вызовов.
  • Выберите корневой узел и нажимайте клавишу *, пока не раскроется все дерево. Обратите внимание, что вам нужно только нажать * на корневом узле. Это расширит все дерево за "мгновение".
  • Щелчок правой кнопкой мыши, Копировать расширенную иерархию.
  • Вставить в текстовый файл.
  • Полнотекстовый поиск D.four ().

Примечания

  • Ключ * расширяет все нерасширенные конечные узлы на один уровень.
  • Клавиши + и - работают для расширения и закрытия только выбранного узла.
  • Я пробовал это на шведской клавиатуре, где * находится в другом месте, чем на клавиатуре США, но, надеюсь, Eclipse не будет заботиться об этом.

Обновление

Вот некоторая документация , где упоминается ключ *.

1 голос
/ 15 сентября 2010

Мы только что нашли способ.Не совсем "автоматический", включает много штампов ->.:)

  • Открыть иерархию вызовов для A.one(), Показать иерархию Callee.
  • Начать с корня, развернуть все дерево, многократно нажав кнопку ->.Действительно много раз.:)
  • Правой кнопкой мыши щелкните Копировать расширенную иерархию.
  • Вставьте в текстовый файл.
  • Полнотекстовый поиск для D.four().

Я надеюсь, что есть более эффективные способы не нажимать кнопку ->.

0 голосов
/ 15 сентября 2010

Самый простой способ, о котором я знаю, это перейти вручную к D.four(), использовать Call Hierarchy для этого метода и посмотреть, содержится ли A.one() в иерархии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...