Je souhaite analyser Java fichiers de code source 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.?
Téléchargez l'analyseur Java depuis http://javaparser.github.io/javaparser/
Vous devrez écrire du code. Ce code invoquera l'analyseur ... il vous renverra 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 flux d'entrée. Vous pouvez utiliser un FileInputStream si vous le souhaitez.
Vous devrez créer un visiteur. Votre visiteur sera facile car vous ne vous intéressez qu'aux 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, procédez comme suit:
MethodVisitor visitor = new MethodVisitor();
visitor.visit(cu, null);
QDOX est un analyseur plus léger, qui n'analyse que jusqu'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 dû naviguer dans le modèle pour trouver le bon nom, car il n'indexe pas les classes et les méthodes par nom.
Vous pouvez créer votre analyseur avec l'un des générateurs d'analyseurs:
En outre, vous pouvez 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.
Pourriez-vous utiliser un doclet personnalisé avec JavaDoc?
Doclet.com peut fournir plus d'informations.
JavaCC est un "compilateur-compilateur" (générateur d'analyseur) pour Java. Il existe de nombreux fichiers de grammaire, dont un pour Java 1.5.