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);
しかし、2つの質問があります。1。アシスト情報を取得する方法は?2.コンパイラがタイプ/メソッド/フィールド情報を検索するためのクラスパスまたはソースパスを指定するにはどうすればよいですか?