Speed up java parsing a bit
This commit is contained in:
@@ -493,13 +493,17 @@ public class ORAstUtils {
|
||||
}
|
||||
|
||||
public static List<CompilationUnit> parse(JavaParser parser, Iterable<Path> sourceFiles) {
|
||||
List<CompilationUnit> cus = parser.parse(sourceFiles, null, new InMemoryExecutionContext());
|
||||
InMemoryExecutionContext ctx = new InMemoryExecutionContext();
|
||||
ctx.putMessage(JavaParser.SKIP_SOURCE_SET_TYPE_GENERATION, true);
|
||||
List<CompilationUnit> cus = parser.parse(sourceFiles, null, ctx);
|
||||
List<Result> results = new UpdateSourcePositions().doNext(new MarkParentRecipe()).run(cus);
|
||||
return results.stream().map(r -> r.getAfter() == null ? r.getBefore() : r.getAfter()).map(CompilationUnit.class::cast).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
public static List<CompilationUnit> parseInputs(JavaParser parser, Iterable<Parser.Input> inputs) {
|
||||
List<CompilationUnit> cus = parser.parseInputs(inputs, null, new InMemoryExecutionContext());
|
||||
InMemoryExecutionContext ctx = new InMemoryExecutionContext();
|
||||
ctx.putMessage(JavaParser.SKIP_SOURCE_SET_TYPE_GENERATION, true);
|
||||
List<CompilationUnit> cus = parser.parseInputs(inputs, null, ctx);
|
||||
List<Result> results = new UpdateSourcePositions().doNext(new MarkParentRecipe()).run(cus);
|
||||
return results.stream().map(r -> r.getAfter() == null ? r.getBefore() : r.getAfter()).map(CompilationUnit.class::cast).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@@ -119,6 +119,7 @@ public class ORCompilationUnitCache implements DocumentContentProvider, Disposab
|
||||
private JavaParser loadJavaParser(IJavaProject project) {
|
||||
try {
|
||||
return javaParsers.get(project, () -> {
|
||||
logger.info("CU Cache: Creating new Java parser for project " + project.getElementName());
|
||||
List<Path> classpath = getClasspathEntries(project).stream().map(s -> new File(s).toPath()).collect(Collectors.toList());
|
||||
JavaParser jp = JavaParser.fromJavaVersion().build();
|
||||
jp.setClasspath(classpath);
|
||||
@@ -205,9 +206,13 @@ public class ORCompilationUnitCache implements DocumentContentProvider, Disposab
|
||||
}
|
||||
});
|
||||
|
||||
long start = System.currentTimeMillis();
|
||||
CompilationUnit compilationUnit = ORAstUtils.parseInputs(javaParser, List.of(input)).get(0);
|
||||
System.out.println("Parse took: " + (System.currentTimeMillis() - start) + " for " + uri);
|
||||
|
||||
logger.info("CU Cache: created new AST for {}", uri.toString());
|
||||
|
||||
return ORAstUtils.parseInputs(javaParser, List.of(input)).get(0);
|
||||
return compilationUnit;
|
||||
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user