52 votes

Java: analyser le code source Java, extraire les méthodes

Je souhaite analyser les fichiers de code source Java et extraire le code source des méthodes.

J'aurais besoin d'une méthode comme celle-ci:

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

Existe-t-il un moyen simple d'y parvenir, une bibliothèque pour m'aider à construire ma méthode, etc.?

62voto

arcticfox Points 608

Télécharger le java analyseur de http://code.google.com/p/javaparser/

Vous aurez à écrire le code. Ce code permettra d'invoquer l'analyseur... il va vous renvoyer un 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;

Remarque: SEDInputStream est une sous-classe de flux d'entrée. Vous pouvez utiliser un FileInputStream si vous le souhaitez.


Vous devrez créer un visiteur. Votre visiteur sera facile parce que vous êtes seulement intéressés par les méthodes:

  public class MethodVisitor extends VoidVisitorAdapter
  {
        public void visit(MethodDeclaration n, Object arg)
        {
             // extract method information here.
             // put in to hashmap
        }
  }

Pour invoquer le visiteur, faites ceci:

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

9voto

Felix Leipold Points 269

QDOX est un analyseur syntaxique plus léger qui effectue uniquement une analyse au niveau de la méthode. En d'autres termes , le corps de la méthode n'est pas analysé dans les instructions. Il vous donne plus ou moins ce que vous demandez, même si vous devez naviguer dans le modèle pour trouver le bon nom, car il n'indexe pas les classes et les méthodes par leur nom.

3voto

willcodejavaforfood Points 20365

Eclipse et Netbeans disposent tous deux de bibliothèques permettant d’analyser le code source et de créer un arbre de syntaxe abstraite permettant d’extraire ce que vous voulez.

3voto

Rorick Points 3582

Vous pouvez construire votre analyseur avec un analyseur de générateurs:

  1. ANTLR
  2. JavaCC
  3. SableCC

Aussi, vous pouvez utiliser (ou d'étudier comment il fonctionne) quelque chose de prêt-à -. Il y a Java Tree Builder qui utilise JavaCC et RefactorIt qui utilise ANTLR.

2voto

Upul Bandara Points 3376

Je pense que vous pouvez utiliser le générateur d'analyseur ANTLR .

Il est très facile à utiliser et le site ANTLR contient de nombreux exemples écrits en Java.

En outre, il est livré avec un plug-in pour Eclipse.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X