首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在eclipse中搜索对AST或CompilationUnit上字段的引用?

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

Stack Overflow用户
提问于 2011-05-04 17:03:15
回答 1查看 1.4K关注 0票数 1

嗨,

我正在开发一个Eclipse插件。我需要找到源代码中使用AST或jdt.core.dom之类的所有引用。我需要像ASTNodes这样的引用来获取父节点,并检查表达式中涉及引用的几件事情。事先谢谢。

编辑:

我想再具体一点,我的问题是,我试图找到一些关于常数的引用,但是.我不知道怎样才能在比赛中捕捉到这些引用。我需要检查,对确定常量的引用涉及的表达式。我只得到使用它们的方法的来源。

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

代码语言:javascript
复制
pattern = SearchPattern.createPattern(field, IJavaSearchConstants.REFERENCES);


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

事先谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-04 18:05:41

我用了这样的方法:

  1. 搜索方法的声明,返回对IMethod的引用的IMethod
  2. 搜索,记录返回的每个IMethod的IMethods
  3. ,从编译单元

创建AST

搜索声明或引用类似于以下代码。

代码语言:javascript
复制
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:

代码语言:javascript
复制
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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5887132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档