Categorías
Java Development Tools (JDT)

Tutorial de Eclipse JDT: analizar un método Java mediante ASTParser

Este tutorial pertenece a Eclipse JDT Tutorial Series.

ASTParser puede usar su método setKind () para configurar la fuente para que sea analizada como una unidad de compilación, expresión única, una secuencia de declaraciones o una secuencia de declaraciones del cuerpo de la clase.

parser.setKind(ASTParser.K_COMPILATION_UNIT);

Cualquiera de esos cuatro no puede manejar un solo método independiente. Esto no es agradable. Siguiendo la lógica de una unidad de compilación, se puede analizar una clase. Entonces podemos agregar un nombre de clase falso como un shell a cada método, luego el método envuelto en una clase falsa se puede analizar correctamente usando ASTParser.

El código se ve así:

String sourceStart = "public class A {";
//add a fake class A as a shell, to meet the requirement of ASTParser
String sourceMiddle = "";
for(String s : tempMiddle){	
	s = s.trim();
	if(s.trim().length()>0 && !s.startsWith("---") && !s.startsWith("/") && !s.startsWith("*") )
	sourceMiddle += s.trim() + "n";
}
String sourceEnd = "}";
 
String source = sourceStart + sourceMiddle + sourceEnd;
 
parser.setSource(source.toCharArray());
parser.setKind(ASTParser.K_COMPILATION_UNIT);
final CompilationUnit cu = (CompilationUnit) parser.createAST(null);
 
cu.accept(new ASTVisitor() {
        //by add more visit method like the following below, then all king of statement can be visited.
	public boolean visit(ForStatement node) {
 
	System.out.println("ForStatement -- content:" + node.toString());
 
	ArrayList<Integer> al = new ArrayList<Integer>();
	al.add(node.getStartPosition());
	al.add(node.getLength());
 
	statements.add(al);
	return false;
}
 
      	/*
	IfStatement
	ForStatement
	WhileStatement
	DoStatement
	TryStatement
	SwitchStatement
	SynchronizedStatement
	*/
}
  ¿Cómo resolver enlaces al usar Eclipse JDT ASTParser?

Puede haber una mejor manera de hacer esto, pero seguramente esto funciona y es mucho mejor que escribir un analizador desde cero.

Salud.

Aquí hay una publicación sobre el uso de JDT ASTParser para analizar una clase que reside en un archivo .java.

Por Programación.Click

Más de 20 años programando en diferentes lenguajes de programación. Apasionado del code clean y el terminar lo que se empieza. ¿Programamos de verdad?

Deja una respuesta

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