valores valor sentencia retornar retornan retorna regresan que programa metodos metodo ejemplo documentar codigo java parsing

valor - Java: código fuente de parse java, métodos de extracción



retornar un string en java (6)

Deseo analizar los archivos de código fuente de Java y extraer el código fuente de los métodos.

Necesitaría un método como este:

/** Returns a map with key = method name ; value = method source code */ Map<String,String> getMethods(File javaFile);

¿Hay una manera simple de lograr esto, una biblioteca que me ayude a construir mi método, etc.?


¿Podría usar un doclet personalizado con JavaDoc?

Doclet.com puede proporcionar más información.


Creo que puedes usar el generador de analizadores ANTLR .

Es muy fácil de usar y el sitio ANTLR tiene muchos ejemplos escritos en Java.

También viene con un complemento para eclipse.


Descargue el analizador de Java de http://javaparser.github.io/javaparser/

Tendrás que escribir un código. Este código invocará al analizador ... le 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 de 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, haz esto:

MethodVisitor visitor = new MethodVisitor(); visitor.visit(cu, null);


Puede construir su analizador sintáctico con uno de los generadores de analizadores sintácticos:

  1. ANTLR
  2. JavaCC
  3. SableCC

Además, puede usar (o estudiar cómo funciona) algo preparado. Hay Java Tree Builder que usa JavaCC y RefactorIt que usa ANTLR.


QDOX es un analizador más ligero, que solo analiza el nivel del método, es decir, el cuerpo del método no se analiza en las sentencias. Te proporciona más o menos lo que pides, aunque deberías navegar por el modelo para encontrar el nombre correcto, ya que no indexa clases y métodos por nombre.


JavaCC es un "compilador compilador" (generador de analizador) para Java. Existen muchos archivos de gramática, incluido uno para Java 1.5.