Для исследования новых файлов я привык запускать ctags
проблема заключается в том, что эта программа не поддерживает C ++ 11, и я просто использовал ее до тех пор, пока не обнаружил, что разработка этой программы закончилась несколько лет назад.
Теперь мне нужен эквивалентный инструмент для C ++ 11 и выше, и я помню, что clang
один может вывести AST
любого данного файла, так что мне было интересно, если фронт имеет аналогичные функции, которые были сопоставимы с тем, что я делал с ctags
,
Например, это объекты, которые вы можете легко перечислить с ctags
в режиме C ++
ctags --list-kinds=c++
c classes
d macro definitions
e enumerators (values inside an enumeration)
f function definitions
g enumeration names
l local variables [off]
m class, struct, and union members
n namespaces
p function prototypes [off]
s structure names
t typedefs
u union names
v variable definitions
x external and forward variable declarations [off]
Есть ли clang
способен выполнить аналогичное задание?
Посмотри на rtags инструмент. Он использует Clang для перекомпиляции всего вашего проекта.
После этого вы можете использовать его для навигации по источникам. Единственная проблема
что AST создается после запуска препроцессора, поэтому код, который был отключен
макросы недоступны для навигации.
Проекты поддерживают набор привязок elisp, который позволяет вам контролировать RTags
из Emacs. Для интеграции в vim смотрите сторонние проекты по lyuts или же Шейн Харпер.
Проект llvm / clang не содержит инструмента для создания файлов тегов из ast. Однако на github есть несколько проектов, использующих для этого clang, которые можно найти через: https://github.com/search?utf8=%E2%9C%93&д = лязг + теги
Следующие два проекта привлекли к себе внимание (звезды, проблемы, запросы на извлечение)
http://ffevotte.github.io/clang-tags/ (последний коммит: 4 января 2014 г.)
https://github.com/drothlis/clang-ctags (последний коммит: 18 июня 2014 г.)
(http://clang.llvm.org/docs/ExternalClangExamples.html указывает на этот проект)
(rtags, см. ответ по Николай)
К сожалению, недавних коммитов нет, однако авторы до сих пор отвечают на поднятые вопросы.
отказ Я знаю, что ответы только на ссылки не приветствуются. Я расширю этот вопрос, когда найду время протестировать проекты и посмотреть, как они соотносятся с Буйный-Ctags или же Универсальный-Ctags.