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

14 respostas
G

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

14 Respostas

H

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

G

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!

H

Vc já tentou usar Reflection?

G

Não,

Nem conheço.

Você tem algum material?

Obrigado!

H

Tem esse artigo no GUJ.

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

G

Estava lendo o artigo.

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

abraços

H

gustcc:
Estava lendo o artigo.

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

abraços


Se você quer ler o arquivo, você pode ler ele como se fosse um arquivo de texto normal.

G

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

D

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

D

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

G

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,

M

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

D

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,

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?

S

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.

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.

Criado 1 de fevereiro de 2012
Ultima resposta 17 de dez. de 2012
Respostas 14
Participantes 6