如何在eclipse中搜索AST或CompilationUnit上的字段引用



你好,

我正在开发一个Eclipse插件。我需要在使用AST或jdt.core.dom的源或者类似的东西。我需要这个引用ASTNodes以便获取父节点并检查几个表达中的事物涉及参考文献。事先谢谢。


编辑:

我想再具体一点,我的问题是我试图捕捉一些对常量的引用,但。。。我不知道该怎么做才能赶上这篇文章提到的比赛。我需要检查对已确定常量的引用所涉及的表达式。我只知道使用它们的方法的来源。

我认为问题在于范围或模式:

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

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

事先谢谢!

我使用了类似的东西:

  1. 搜索方法,返回一个IMethod
  2. 搜索对I方法,记录这些I方法
  3. 对于返回的每个I方法,创建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);

请参阅http://help.eclipse.org/helios/index.jsp?topic=/org.eclipse.jdt.doc.isv/guide/jdt_int_core.htm有关java搜索、java模型和AST的更多详细信息。

最新更新