Java:解析Java源代码,提取方法

2022-08-31 20:15:13

我希望解析java源代码文件,并提取方法源代码。

我需要这样的方法:

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

有没有一个简单的方法来实现这一点,一个库来帮助我构建我的方法,等等?


答案 1

https://javaparser.org/ 下载 java 解析器

你必须编写一些代码。此代码将调用解析器...它将返回一个编译单元:

            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;

注意: SEDInputStream 是输入流的子类。如果需要,可以使用 FileInputStream。


您必须创建一个访问者。您的访问者将很容易,因为您只对方法感兴趣:

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

要调用访问者,请执行以下操作:

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

答案 2

QDOX是一个更轻量级的解析器,它只解析到方法级别,即方法主体没有被解析为语句。它或多或少地为您提供了您所要求的内容,即使您已经导航模型以找到正确的名称,因为它不会按名称索引类和方法。


推荐