使用 Eclipse jdt 工具,您可以遍历 java 代码片段的 AST,如下所示:
ASTParser ASTparser = ASTParser.newParser(AST.JLS3);
ASTparser.setSource("package x;class X{}".toCharArray());
ASTparser.createAST(null).accept(...);
但是,当尝试执行代码完成和代码选择时,似乎我必须在插件应用程序中执行此操作,因为我必须编写类似的代码
IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(somePath));
ICodeAssist i = JavaCore.createCompilationUnitFrom(f);
i.codeComplete/codeSelect(...)
无论如何,我最终可以获得一个包含 jdt 代码完整/选择功能的独立 java 应用程序吗?
多谢!石奎
我注意到使用 org.eclipse.jdt.internal.codeassist.complete.CompletionParser 我也可以解析代码片段。
CompletionParser parser =new CompletionParser(new ProblemReporter(
DefaultErrorHandlingPolicies.proceedWithAllProblems(),
new CompilerOptions(null),
new DefaultProblemFactory(Locale.getDefault())),
false);
org.eclipse.jdt.internal.compiler.batch.CompilationUnit sourceUnit =
new org.eclipse.jdt.internal.compiler.batch.CompilationUnit(
"class T{f(){new T().=1;} \nint j;}".toCharArray(), "testName", null);
CompilationResult compilationResult = new CompilationResult(sourceUnit, 0, 0, 0);
CompilationUnitDeclaration unit = parser.dietParse(sourceUnit, compilationResult, 25);
但我有两个问题:1.如何检索辅助信息?2. 如何指定类路径或源路径,让编译器查找类型/方法/字段信息?