Semantic не использует файл GTAGS для создания тегов, которые будут использоваться непосредственно для таких функций, как прыжок или интеллектуальное завершение. Серверная часть GNU Global для семантической базы данных вместо этого будет использовать GTAGS в качестве гигантской таблицы имен. Таким образом, если вам нужно найти символ по имени, GTAGS сообщит семантике, где он находится, а затем семантика сама проанализирует эти файлы более непосредственно, чтобы получить подробности.
Причина, по которой GTAGS не используется напрямую в качестве заменяющего синтаксического анализатора, заключается в том, что информации в GTAGS недостаточно для операций, необходимых Semantic, поскольку он исключает информацию о типах данных, синтаксический анализ аргументов и синтаксический анализ локального контекста.
Использование gtags в /usr/include — интересная идея, но вряд ли она будет часто использоваться. Semantic будет искать только файлы заголовков, которые фактически используются в вашем коде, а не все включаемые файлы. Серверная часть GNU Global специально предназначена для сканирования всего проекта на наличие символа или ссылок на символы. Если вы хотите найти символ во всех своих включениях, то это было бы полезно, но в Semantic в настоящее время нет такой функции.
Можно использовать ebrowse, чтобы делать то, что вы хотите, но я обнаружил, что для C++ синтаксический анализатор был несовершенен в некоторых тонкостях и вызывал некоторые проблемы.
Если вы считаете, что анализатор семантики неточен, вы должны опубликовать это как ошибку в списке рассылки cedet-devel.
person
Eric
schedule
27.09.2010