我有一个VariableDeclarationStatement
,我通过访问AST来坚持。想在声明范围内找到对这个局部变量的所有引用。这包括当前作用域中的嵌套块。
执行此操作的一种方法是访问下面的所有节点并收集具有此SimpleName
的语句。但这太麻烦了。 JDT中是否有一个API来“查找”并返回此类语句的列表。
答案 0 :(得分:3)
您可以使用JDT SearchEngine
API来检索对特定AST节点的引用。
IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { yourProject });
//IJavaSearchScope scope = SearchEngine.createWorkspaceScope(); // Use this if you dont have the IProject in hand
SearchPattern searchPattern = SearchPattern.createPattern(field,
IJavaSearchConstants.REFERENCES);
SearchRequestor requestor = new SearchRequestor() {
@Override
public void acceptSearchMatch(SearchMatch match) {
System.out.println(match.getElement());
}
};
SearchEngine searchEngine = new SearchEngine();
searchEngine.search(searchParttern,
new SearchParticipant[] { SearchEngine.getDefaultSearchParticipant() }, scope,
requestor, new NullProgressMonitor());
我还没有检查过,但您可以尝试将范围作为IType java元素。
IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] {iType});
有关详细信息,请使用以下链接并导航至“使用Java搜索引擎”#39;部分。
http://help.eclipse.org/indigo/index.jsp?topic=/org.eclipse.jdt.doc.isv/guide/jdt_int_core.htm
编辑:如果解析了依赖关系,您可以使用以下代码从VariableDeclarationNode
获取java元素:
IVariableBinding binding = variableDeclarationNode.resolveBinding()
IJavaElement variableElement = binding.getJavaElement();