1

やあ、

私はEclipseプラグインを開発しています。AST などを使用して、ソース内のすべての参照を見つける必要がありますjdt.core.domASTNodes親ノードを取得し、参照が関係する式でいくつかのことを確認するために、この参照が必要です。事前に感謝します。


編集:

もう少し具体的にしたいのですが、私の問題は、定数への参照をいくつかキャッチしようとすることですが...この参照の一致をキャッチする方法がわかりません。決定された定数への参照が含まれている式を確認する必要があります。それらが使用されているメソッドのソースのみを取得します。

問題はスコープまたはパターンだと思います:

pattern = SearchPattern.createPattern(field, IJavaSearchConstants.REFERENCES);


scope = SearchEngine.createJavaSearchScope(declaringType.getMethods());

よろしくお願いします!

4

1 に答える 1

3

私は次のようなものを使用しました:

  1. メソッドの宣言を検索し、IMethodを返します
  2. IMethodへの参照を検索し、それらのIMethodを記録します
  3. 返されたIMethodごとに、コンパイルユニットからASTを作成します

宣言または参照の検索は、次のコードのようになります。

SearchRequestor findMethod = ...; // do something with the search results
SearchEngine engine = new SearchEngine();
IJavaSearchScope workspaceScope = SearchEngine.createWorkspaceScope();
SearchPattern pattern = SearchPattern.createPattern(searchString,
            IJavaSearchConstants.METHOD, IJavaSearchConstants.DECLARATIONS,
            SearchPattern.R_EXACT_MATCH);
SearchParticipant[] participant = new SearchParticipant[] { SearchEngine
            .getDefaultSearchParticipant() };
engine.search(pattern, participant, workspaceScope, findMethod,
                monitor);

IMethod参照を取得したら、次を使用してASTにアクセスできます。

ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setResolveBindings(true);
if (methodToSearch.isBinary()) {
    parser.setSource(methodToSearch.getClassFile());
} else {
    parser.setSource(methodToSearch.getCompilationUnit());
}
CompilationUnit cu = (CompilationUnit) parser.createAST(null);

Java検索、Javaモデル、およびASTの詳細については、http ://help.eclipse.org/helios/index.jsp?topic = / org.eclipse.jdt.doc.isv / guide/jdt_int_core.htmを参照してください。

于 2011-05-04T18:05:41.673 に答える