我正在使用Spoon Inria来解析和分析 Java 应用程序。目前,我正在使用下面的代码来创建输入项目模型。当项目文件保存在磁盘中时,此代码有效。
Launcher spoonAPI = new Launcher();
spoonAPI.addInputResource(projectDirectory); //The path to the project root directory
spoonAPI.buildModel();
CtModel ctModel = spoonAPI.getModel();
但是,目前我在内存中有 Java 文件(类)的内容,我不想将它们写入磁盘,因为它需要很长时间。我想知道是否有一种方法可以使用 Spoon 将文件内容传递给解析器。例如,如下代码。
//Key is name of class and value is its content
Map<String, String> JavafileContents= new HashMap<String, String>();
for (String filePath : JavafileContents.keySet()) {
spoonAPI.parse(JavafileContents.get(filePath ));
}
CtModel ctModel = spoonAPI.getModel(); //The extracted model should contains all parsed files.
就像 JDT 中提供的类似解决方案一样。
ASTParser parser = ASTParser.newParser(AST.JLS14);
parser.setSource(javaFileContents.get(filePath).toCharArray());
CompilationUnit compilationUnit = (CompilationUnit)parser.createAST(null);