如何在eclipse中搜索对AST或编译单元上的字段的引用?
嗨 我正在开发一个Eclipse插件。我 需要在中查找所有引用 源代码使用AST或如何在eclipse中搜索对AST或编译单元上的字段的引用?,eclipse,scope,design-patterns,abstract-syntax-tree,eclipse-jdt,Eclipse,Scope,Design Patterns,Abstract Syntax Tree,Eclipse Jdt,嗨 我正在开发一个Eclipse插件。我 需要在中查找所有引用 源代码使用AST或jdt.core.dom 或者类似的。我需要这个 引用,如ASTNodes,以便 获取父节点并检查几个 表达中的事物在哪里 涉及参考文献。 先谢谢你 编辑: 我想具体一点,我的问题是,我试图抓住一些常数的引用,但。。。我不知道如何才能抓住这场比赛。我需要检查引用已确定常数的表达式。我只得到使用它们的方法的来源 我认为问题在于范围或模式: pattern = SearchPattern.createPattern(
jdt.core.dom
或者类似的。我需要这个
引用,如ASTNodes
,以便
获取父节点并检查几个
表达中的事物在哪里
涉及参考文献。
先谢谢你
编辑: 我想具体一点,我的问题是,我试图抓住一些常数的引用,但。。。我不知道如何才能抓住这场比赛。我需要检查引用已确定常数的表达式。我只得到使用它们的方法的来源 我认为问题在于范围或模式:
pattern = SearchPattern.createPattern(field, IJavaSearchConstants.REFERENCES);
scope = SearchEngine.createJavaSearchScope(declaringType.getMethods());
事先谢谢 我使用了类似于:
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的更多详细信息,请参阅。重点是。。。我不明白你是如何迭代结果的(第三点)。如何创建一个迭代块来处理每个结果?。谢谢,对不起我的英语!请参阅我的算法示例。感谢您的代码,但是。。。我认为问题在我的范围之内。我需要查找语句,但我有一个作用域:“scope=SearchEngine.createJavaSearchScope(declaringType.getMethods());”我如何获得语句而不是方法?事实上可能吗?