Подтвердить что ты не робот

IntelliJ иерархия вызовов полей

Eclipse JDT имеет функцию "иерархии вызовов" - начинать с поля/метода и рекурсивно находить все ссылки.

IntelliJ также реализует это, но он работает только из методов. Для полей вы можете использовать только "Поиск использования", поэтому, если вы хотите глубже копать, вам нужно выполнить дополнительные поиски.

Попробовал "Dataflow to here", но это не то, что я ищу.

Я что-то упустил? Есть ли лучший способ изучить использование поля в IntelliJ?

4b9b3361

Ответ 1

EDIT

Приведенная ниже проблема была решена, и IntelliJ IDEA 2019.3 будет иметь эту функцию.

ОБНОВЛЕНИЕ 2

Я скачал:

IntelliJ IDEA 2019.3 EAP (Community Edition)
Build #IC-193.3793.14, built on September 25, 2019

Но, похоже, эта проблема не была исправлена правильно, иерархия вызовов для полей не приводит вас к фактическому использованию поля в методе, а скорее к строке определения метода.

Смотрите: https://youtrack.jetbrains.net/issue/IDEA-160274#focus=streamItem-27-3721096.0-0

Оригинальный ответ

IntelliJ не имеет этой функции, однако здесь есть запрос функции: https://youtrack.jetbrains.com/issue/IDEA-160274

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

Ответ 2

Выберите метод, который вас интересует, а затем используйте в верхнем меню "Навигация" > "Иерархия вызовов" или просто Ctrl + Alt + H.

AFAIK это не работает для полей, потому что, когда я выбираю поле, опция "Навигация > Иерархия вызовов" становится недоступной. Единственными подобными функциями, которые я знаю для полей, являются "Редактировать > Найти > Найти использование" (Alt + F7) и "Изменить > Найти > Показать использование" (Ctrl + Alt + F7).

Ответ 3

"Dataflow to here" и "Dataflow from here" дают вам рекурсивный вид данных, поступающих в и из полей (или локальных переменных).

Я думаю, что эти две функции, по сути, являются тем, что вам нужно. Если нет, можете ли вы перефразировать вопрос в более менее специфичных для IDE условиях? Другими словами: какую информацию вы хотите извлечь из своей кодовой базы?

Ответ 4

Используйте функцию "Найти использование" (Alt + F7)

Ответ 5

Я не нашел такой возможности в IntelliJ. Я также искал его.

В Pakka Pakka: я проверил "Dataflow to here" и "Dataflow from here" . В этом случае они не особенно полезны. Только "Dataflow from here" показывает использование поля, но он отличается от иерархии вызовов, как я знаю, из Eclipse. В "Dataflow from here" показано, где используется данное поле и куда поступают данные из поля (где данные из поля далее передаются). Он не отображает иерархию вызывающего абонента, то есть методы, которые вызывают методы, которые используют данное поле.