Индекс CDT не возвращает все объявления программно, но отлично работает в самом Eclipse - PullRequest
0 голосов
/ 31 января 2019

Я разрабатываю плагин, использующий API CDT, я посещаю все определения функций в некотором файле ast (Абстрактное синтаксическое дерево) в каком-то файле, а затем пытаюсь найти, существует ли объявление для функции, которую я посещаю в проекте.

Мне нужно сделать это программно, к сожалению, индексатор не возвращает объявление для некоторых функций, что-то, чтобы упомянуть, это прекрасно работает, когда я использую затмение само, я имею в виду 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

...