Extração de Metadata de código fonte JAVA com AST (ou outro)

Olá pessoal,
Tudo bem?

Estou com problemas na extração de metadados. Estou tentando usar a AST, porém não estou obtendo muito sucesso. Alguém já trabalhou com isso?
Exemplos, tutoriais e sugestões são bem vindos.

Agradeço desde já.

Abraços

Deixa eu ver se eu entendi bem, você está querendo saber se a classe está anotada com @Entity por exemplo?

Oi,

Seria o seguinte:

  • Preciso extrair classes, atributo e métodos de códigos java e inserir em um banco de dados. O que está matando é essa extração. Achei muito pouca coisa a respeito. Por isso estou recorrendo a vocês. Talvez se não de a AST, algum outro plugin.

Agradeço.

Abraços!

Vc já tentou usar Reflection?

Não,

Nem conheço.

Você tem algum material?

Obrigado!

Tem esse artigo no GUJ.

Você pode achar mais no google pesquisando por: Java Reflection
http://www.guj.com.br/articles/10

Estava lendo o artigo.

Tem como usar em um diretório? Para buscar em todos os arquivos fonte?

abraços

[quote=gustcc]Estava lendo o artigo.

Tem como usar em um diretório? Para buscar em todos os arquivos fonte?

abraços[/quote]
Se você quer ler o arquivo, você pode ler ele como se fosse um arquivo de texto normal.

sim, mas como conseguir extrair as classes e métodos de um arquivo texto?

aí complica.

ou eu entendi mal a resposta anterior. Se puder postar um exemplo.

obrigado. abraços

AST = Abstract Syntax Tree?
Você quer fazer um parser, é isso?

Não sei para que vc precisa disso, mas já deve conhecer um pouco do que está falando para estar pedindo não é mesmo?
Enfim, dê uma olhada aqui: http://www.antlr.org/
Uma gramática da linguagem Java (versão 6.0) pode ser encontrada aqui: http://openjdk.java.net/projects/compiler-grammar/antlrworks/Java.g

Você pode modificar essa gramática, inserindo código nela (você precisa aprender a mexer com o antlr) para obter as partes que você precisa.

[]'s

Olá,

Seria isso mesmo. Só que ando muito confuso, pois falam muito em AST (Abstract Syntax Tree).

Vou pesquisar sobra sua indicação.

Eu tenho dificuldades, pois passei 7 anos programando em Delphi. Agora estou precisando usar Java. E muita coisa se confunde.

Para esclarecer melhor: É um tipo de parser sim. Mas só o que me interessa, são classes, métodos, exceções, interfaces e atributos. O bloco de código não tem importância nessa etapa.

Obrigado pela dica! Vou pesquisar.

Dicas, sugestões e exemplos são sempre bem vindos.

Abraços,

existem outros também que fazem esse trabalho, um exemplo seria o javacc

[quote=gustcc]Olá,

Seria isso mesmo. Só que ando muito confuso, pois falam muito em AST (Abstract Syntax Tree).

Vou pesquisar sobra sua indicação.

Eu tenho dificuldades, pois passei 7 anos programando em Delphi. Agora estou precisando usar Java. E muita coisa se confunde.

Para esclarecer melhor: É um tipo de parser sim. Mas só o que me interessa, são classes, métodos, exceções, interfaces e atributos. O bloco de código não tem importância nessa etapa.

Obrigado pela dica! Vou pesquisar.

Dicas, sugestões e exemplos são sempre bem vindos.

Abraços,[/quote]

gustcc, conseguiu fazer o que estava precisando?
também estou precisando obter estas informações em um projeto java e até agora cheguei na classe FieldDeclaration e nos pacotes org.eclipse.core.resources e org.eclipse.jdt.core.dom
Você usou algo diferente?

[quote=gustcc]Olá pessoal,
Tudo bem?

Estou com problemas na extração de metadados. Estou tentando usar a AST, porém não estou obtendo muito sucesso. Alguém já trabalhou com isso?
Exemplos, tutoriais e sugestões são bem vindos.

[/quote]

dê uma olhada neste framework http://code.google.com/p/genftw/
nunca usei , mas parece bem simples e direto ao que vc quer. Como ele usa o freemarker para gerar o output, vc pode gerar qq output que vc quiser (cvs, xml, etc…) e depois ler eses arquivos para o banco dedados.