Oi pessoal,
Tudo bem?
Vou explicar o problema:
“Preciso percorrer um arquivo de código fonte Java, extraindo classes, métodos, interfaces, variáveis e exceptions. Não é necessário o corpo do fonte. Somente as declarações, porém separadas (se é public, class, método, parâmetros, retorno)”.
Seguindo o que já foi feito:
Código:
import java.util.List;
import org.aspectj.org.eclipse.jdt.core.dom.MethodRef;
import org.eclipse.jdt.core.dom.ASTVisitor;
import org.eclipse.jdt.core.dom.FieldDeclaration;
import org.eclipse.jdt.core.dom.MethodDeclaration;
import org.eclipse.jdt.core.dom.MethodInvocation;
import org.eclipse.jdt.core.dom.SingleVariableDeclaration;
import org.eclipse.jdt.core.dom.TypeDeclaration;
import org.eclipse.jdt.core.dom.VariableDeclarationFragment;
import org.eclipse.jdt.core.search.MethodDeclarationMatch;
import sun.org.mozilla.javascript.internal.ast.VariableDeclaration;
public class TObjectVisitor extends ASTVisitor{
public boolean visit(TypeDeclaration node) {
System.out.println("---Início Classe---");
System.out.println(node.getName().toString());
return true;
}
@Override
public void endVisit(TypeDeclaration node) {
System.out.println("---Fim Classe---");
super.endVisit(node);
}
@Override
public boolean visit(FieldDeclaration node) {
System.out.println("---Início Campos---");
List<VariableDeclarationFragment> l = node.fragments();
for (VariableDeclarationFragment t : l) {
System.out.println(t.getName().toString()+" "+t.getInitializer().properties().toString());
}
return super.visit(node);
}
@Override
public void endVisit(FieldDeclaration node) {
System.out.println("---Fim Campos---");
super.endVisit(node);
}
@Override
public boolean visit(MethodDeclaration node) {
System.out.println("---Início Métodos---");
List<MethodDeclarationMatch> l = node.structuralPropertiesForType();
for (MethodDeclarationMatch t : l) {
System.out.println(t.getElement().toString());
}
return super.visit(node);
}
@Override
public void endVisit(MethodDeclaration node) {
System.out.println("---Fim Métodos---");
super.endVisit(node);
}
}
1 - Classes: somente o nome. Deveria ter com
2 - Variáveis, só consigo extrair o nome (teste) ou a expressão (teste=0). Não estou conseguindo trazer o tipo (int) nem o modificador (public).
3 - Métodos: Erro direto. Tentei diversos recursos, mas o máximo que consegui foi retornr todo o body do código. [color=blue]OBS: O médodo escrito foi o último que testei no desespero. Sei que está errado.
[/color]
O que estou fazendo de errado?
Por favor me ajudem!!!
Obrigado!!!