问题描述
我正在使用inria Spoon解析Java项目,然后提取有关类,接口,字段和方法及其所有引用的信息。
我正在使用以下代码构建输入项目的模型。
SpoonAPI spoonAPI = new Launcher();
spoonAPI.addInputResource(projectDirectory);
spoonAPI.buildModel();
CtModel ctModel = spoonAPI.getModel();
但是, buildModel()在大项目中非常耗时。
PS:我使用JavaParser使用以下代码,它比Spoon更快。
Path pathToSource = Paths.get(projectDirectory);
SourceRoot sourceRoot = new SourceRoot(pathToSource);
sourceRoot.tryToParse();
List<compilationunit> compilations = sourceRoot.getcompilationunits();
我想知道是否有更快的方法可以在Spoon中创建CtModel。
解决方法
您可以仅为需要分析或转换的文件构建模型,而不是解析完整的源目录:
spoonAPI.addInputResource("path/Foo.java");
spoonAPI.addInputResource("path/Bar.java");