2010-09-15 12 views
7

¿Cómo averiguar en Eclipse si se invoca o se puede acceder a algún método (directa o indirectamente) desde otro método?¿Cómo averiguar en Eclipse si se llama cierto método de otro método directa o indirectamente?

Supongamos que quiero refactorizar A.one() que puede verse negativamente influenciado por un efecto secundario en D.four(). Por lo tanto, me gustaría saber si se puede invocar D.four() desde A.one(). Puedo ver qué métodos se llaman desde A.one() usando la jerarquía de llamadas. Puedo navegar por el árbol de llamadas y eventualmente encontrar que A.one() llama al B.two() que llama al C.three() que llama al D.four().

¿Hay alguna manera en Eclipse de hacer esta búsqueda de alguna manera automática?

ps. Hay una opción "Filtros ..." en el Diálogo de jerarquía de llamadas, pero solo oculta los nombres coincidentes.

Respuesta

8

Ésta es una versión modificada de la forma en que (@lexicore) encontrado, que implica mucho menos botón de perforación (mis cambios en negrita):

  • abierto Jerarquía de llamada para A.one(), Mostrar la jerarquía de Callee.
  • Seleccione el nodo raíz y presione la tecla * hasta que se expanda todo el árbol. Tenga en cuenta que solo necesita presionar * en el nodo raíz. Esto expandirá todo el árbol en "no hay tiempo".
  • Haga clic con el botón derecho del mouse, Copie la jerarquía expandida.
  • Pegue en un archivo de texto.
  • Búsqueda de texto completo para D.four().

Notas

  • La clave * expande todos los nodos hojas expandidas de una sola planta.
  • Las teclas + y - funcionan para expandir y cerrar solo el nodo seleccionado.
  • He intentado esto con un teclado sueco, donde * está ubicado en un lugar diferente al de un teclado estadounidense, pero espero que a Eclipse no le importe eso.

actualización

Here is some documentation, donde se menciona la tecla *.

+0

'*'! ¡Gracias! Mis colegas me pidieron que te agradeciera sinceramente. :) – lexicore

+0

¡Genial! Me di cuenta de que el teclado numérico * (Se llama Numpad_Multiply en Eclipse) también funciona. –

+0

Curiosamente, no puedo encontrar ninguna documentación sobre estas asociaciones de teclas. Cuando voy a Preferences-> General-> Keys, donde están definidas las "teclas", estas teclas no están ligadas a nada. –

0

La manera más simple que conozco es navegar manualmente a D.four(), usar Call Hierarchy en ese método y ver si A.one() está en la jerarquía.

+0

Voy a tener que buscar manualmente en toda la jerarquía para hacer esto. Un poco difícil, el árbol es grande. – lexicore

1

Acabamos de encontrar una manera. No es realmente "automático", implica un montón de -> -botón de botón. :)

  • Abra la jerarquía de llamadas para A.one(), Mostrar la jerarquía de Callee.
  • Comience desde la raíz, expanda todo el árbol haciendo clic varias veces en el botón ->. Realmente muchas veces :)
  • Haga clic con el botón derecho del mouse, copie Jerarquía expandida.
  • Pegue en un archivo de texto.
  • Búsqueda de texto completo para D.four().

Espero que haya formas mejores que no impliquen golpear el botón ->.

Cuestiones relacionadas