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 ceci :

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

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

Author: glmxndr, 2010-02-05

6 answers

Téléchargez l'analyseur java à partir de http://javaparser.github.io/javaparser/

Vous devrez écrire du code. Ce code invoquera l'analyseur... il vous retournera une 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 input stream. Vous pouvez utiliser un FileInputStream si vous le souhaitez.


Vous devrez créer un visiteur. Votre visiteur sera facile car vous n'êtes intéressé que 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 appeler le visiteur, ceci:

  MethodVisitor visitor = new MethodVisitor();
  visitor.visit(cu, null);
 54
Author: arcticfox, 2015-05-29 01:18:20

QDOX est un analyseur plus léger, qui analyse uniquement au niveau de la méthode, c'est-à-dire que le corps de la méthode n'est pas analysé en instructions. Il vous donne plus ou moins, ce que vous demandez, même si vous auriez navigué dans le modèle pour trouver le bon nom, car il n'indexe pas les classes et les méthodes par nom.

 6
Author: Felix Leipold, 2017-06-01 08:13:42

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

, Il est très facile à utiliser et ANTLR site a beaucoup d'exemples écrits en Java.

Il est également livré avec un plug-in pour eclipse.

 3
Author: Upul Bandara, 2010-02-05 09:12:46

Vous pouvez construire votre analyseur avec l'un des générateurs d'analyseur:

  1. ANTLR
  2. JavaCC
  3. SableCC

Vous pouvez également utiliser (ou étudier comment cela fonctionne) quelque chose de prêt à l'emploi. Il y a Java Tree Builder qui utilise JavaCC et RefactorIt qui utilise ANTLR.

 3
Author: Rorick, 2010-02-05 09:32:21

Pourriez-vous utiliser un doclet personnalisé avec JavaDoc?

Doclet.com peut fournir plus d'informations.

 2
Author: Rich, 2010-02-05 09:10:06

JavaCC est un "compilateur-compilateur" (générateur d'analyseur) pour Java. Il existe de nombreux fichiers de grammaire pour cela, y compris un pour Java 1.5.

 2
Author: unwind, 2010-02-05 09:10:28