CDT索引不会以编程方式返回所有声明,但可以在Eclipse本身中正常工作

时间:2019-01-31 13:15:29

标签: java eclipse-cdt

我正在开发使用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());
    }
}

@HighCommander4

0 个答案:

没有答案