Используя средства Eclipse jdt, вы можете пройти AST фрагментов кода Java следующим образом:
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(...)
В любом случае, смогу ли я наконец получить отдельное Java-приложение, которое включает в себя средства jdt code complete / select?
большое спасибо!
Ши Куй
Я заметил, что с помощью 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);
Но у меня есть 2 вопроса:
1. Как получить вспомогательную информацию?
2. Как я могу указать путь к классу или исходный путь для компилятора для поиска информации о типе / методе / поле?