Saltar al contenido

Java: analizar el código fuente de Java, extraer métodos

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:

  1. ANTLR
  2. Java CC
  3. 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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *