Estoy buscando escribir un analizador estático para una clase universitaria. Para proporcionar más potencia a la herramienta, me gustaría poder buscar la jerarquía de llamadas (como lo hace Ctrl + Alt + H en Eclipse). Esto también tendría que ser una operación rápida, por lo que la búsqueda probablemente tendría que hacerse contra un índice en lugar de escaneo de código byte.¿Es posible desacoplar las capacidades de indexación de código de Eclipse?
Sin embargo, escribir un plugin de Eclipse sería demasiado ambicioso, espero. En cambio, prefiero desacoplar las partes de Eclipse que crean el índice de código, y usar una biblioteca para hacer búsquedas. La interfaz para el usuario estaría en la línea de comando, para simplificar la implementación.
He leído que Eclipse usa Lucene para hacer la indexación [1], sin embargo, debe haber una cantidad significativa de trabajo sobre Lucene para las capacidades que permite Eclipse.
La pregunta es, ¿es posible desacoplar las capacidades de indexación de Eclipse para su reutilización? Si no, ¿hay otras bibliotecas disponibles disponibles que puedan hacer el tipo de procesamiento que he discutido?
[1] Lucene En Acción (IIRC)
EDITAR
creo que ha habido un malentendido. No estoy buscando inspeccionar la jerarquía de clases, quiero inspeccionar llamar a la jerarquía. Es por eso que la búsqueda y la indexación (de algún tipo, aunque tal vez ese no sea el término correcto) entran en discusión. Inspeccionar la jerarquía de clases es probablemente mucho menos costoso que inspeccionar la jerarquía de llamadas.
En cuanto a escribir un plugin de Eclipse, sí, me encantaría, pero dado que esta tarea es en un plazo muy corto, es probable que no lo logre. Pero es información útil que algunos de ustedes sienten que esto no es tan difícil como creo que será.
Quizás he puesto demasiado énfasis en Eclipse, se me ocurrió que realmente estoy buscando cualquier herramienta que proporcione una API para inspeccionar un gráfico de llamadas a través del bytecode.
¡Gracias por sus respuestas hasta ahora!
- Una cosa importante que debe saber acerca de cómo Eclipse funciona tan rápido, es que crea el índice general una vez, y luego únicamente lo actualiza cuando cambia la clase. Así que supongo que hay poco que desacoplar de esta función de Eclipse. No veo cómo puede evitar un análisis inicial de código de bytes completo, que construirá la tabla de jerarquía de llamadas (que se puede guardar para evitar tener que escanear cada tipo para buscar una jerarquía de llamadas). Para ser sincero, excepto en una base de código realmente grande, un escaneo completo es realmente rápido con ASM, el tiempo que pasará escribiendo un "indexador delta" no valdrá la pena, imo. – Olivier
Un escaneo inicial inicial está bien. Lo que más me preocupa es encontrar una API que simplemente lo haga (ya que está fuera del alcance de mi clase). Si el escaneo completo inicial es con ASM, está bien, solo quiero evitar escribir ese bit ;-) – Grundlefleck