Si hallas alguna incompatibilidad en tu código o proyecto, recuerda probar siempre en un ambiente de testing antes subir el código al proyecto final.
Solución:
Descargue el analizador de Java de https://javaparser.org/
Tendrás que escribir algo de código. Este código invocará al analizador… te devolverá una CompilationUnit:
InputStream in = null;
CompilationUnit cu = null;
try
in = new SEDInputStream(filename);
cu = JavaParser.parse(in);
catch(ParseException x)
// handle parse exceptions here.
finally
in.close();
return cu;
Nota: SEDInputStream es una subclase del flujo de entrada. Puede usar un FileInputStream si lo desea.
Tendrás que crear un visitante. Su visitante será fácil porque solo le interesan los métodos:
public class MethodVisitor extends VoidVisitorAdapter
public void visit(MethodDeclaration n, Object arg)
// extract method information here.
// put in to hashmap
Para invocar al visitante, haga esto:
MethodVisitor visitor = new MethodVisitor();
visitor.visit(cu, null);
QDOX es un analizador más liviano, que solo analiza hasta el nivel del método, es decir, el cuerpo del método no se analiza en declaraciones. Te da más o menos lo que pides, aunque tendrías que navegar por el modelo para encontrar el nombre correcto, ya que no indexa clases y métodos por nombre.
Puede construir su analizador con uno de los generadores de analizadores:
- ANTLR
- Java CC
- SableCC
Además, puedes usar (o estudiar cómo funciona) algo ya hecho. Hay Java Tree Builder que usa JavaCC y RefactorIt que usa ANTLR.
Al final de la página puedes encontrar las notas de otros programadores, tú además tienes la opción de dejar el tuyo si te apetece.