Может ли Clang заменить Exuberant Ctags?

Для исследования новых файлов я привык запускать 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 способен выполнить аналогичное задание?

1

Решение

Посмотри на rtags инструмент. Он использует Clang для перекомпиляции всего вашего проекта.
После этого вы можете использовать его для навигации по источникам. Единственная проблема
что AST создается после запуска препроцессора, поэтому код, который был отключен
макросы недоступны для навигации.

Проекты поддерживают набор привязок elisp, который позволяет вам контролировать RTags из Emacs. Для интеграции в vim смотрите сторонние проекты по lyuts или же Шейн Харпер.

4

Другие решения

Проект llvm / clang не содержит инструмента для создания файлов тегов из ast. Однако на github есть несколько проектов, использующих для этого clang, которые можно найти через: https://github.com/search?utf8=%E2%9C%93&д = лязг + теги

Следующие два проекта привлекли к себе внимание (звезды, проблемы, запросы на извлечение)

К сожалению, недавних коммитов нет, однако авторы до сих пор отвечают на поднятые вопросы.

отказ Я знаю, что ответы только на ссылки не приветствуются. Я расширю этот вопрос, когда найду время протестировать проекты и посмотреть, как они соотносятся с Буйный-Ctags или же Универсальный-Ctags.

0

По вопросам рекламы [email protected]