我正在开发使用CDT Api的插件,我正在某个文件的ast(抽象语法树)中访问所有函数定义,然后尝试查找是否存在我在项目中访问的函数的声明。
我需要以编程方式执行此操作,但不幸的是,索引器未返回某些函数的声明,需要提一下,这很好用,当我使用eclipse本身时,我的意思是IDE,我选择了函数,然后单击鼠标右键查找声明->项目或工作区,它正确显示所有声明,我不确定要丢失什么
//I retrieve the Index this way
IIndex index = CCorePlugin.getIndexManager().getIndex(icProject,IIndexManager.ADD_DEPENDENCIES | IIndexManager.ADD_DEPENDENT | IIndexManager.ADD_EXTENSION_FRAGMENTS_TYPE_HIERARCHY);
//Visitor class
protected int visit(IASTFunctionDefinition functionDefinition) {
IASTFunctionDeclarator funcDeclarator = functionDefinition.getDeclarator();
IASTName funcName = funcDeclarator.getName();
IBinding binding = funcName.resolveBinding();
IIndexName[] indexNames = ast.getIndex().findDeclarations(binding);
for (IIndexName iIndexName : indexNames) {
logger.info("Declaration exists in file : "+iIndexName.getFile());
}
}