我希望解析java源代码文件,并提取方法源代码.
我需要一个像这样的方法:
/** Returns a map with key = method name ; value = method source code */
Map<String,String> getMethods(File javaFile);
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法来实现这一点,一个库来帮助我构建我的方法等等?
小智 57
从http://javaparser.github.io/javaparser/下载java解析器
你必须写一些代码.这段代码将调用解析器......它将返回一个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;
Run Code Online (Sandbox Code Playgroud)
注意:SEDInputStream是输入流的子类.如果需要,可以使用FileInputStream.
你必须创建一个访问者.您的访问者很容易,因为您只对方法感兴趣:
public class MethodVisitor extends VoidVisitorAdapter
{
public void visit(MethodDeclaration n, Object arg)
{
// extract method information here.
// put in to hashmap
}
}
Run Code Online (Sandbox Code Playgroud)
要调用访问者,请执行以下操作:
MethodVisitor visitor = new MethodVisitor();
visitor.visit(cu, null);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
48585 次 |
| 最近记录: |