Введение

Ctags – это инструмент программирования для облегчения понимания кода. Он генерирует индексный файл (или файл тегов) с перечнем имен, обнаруженных в исходных и заголовочных файлах различных языков программирования. В зависимости от языка, в индекс могут включаться функции, переменные, члены классов, макросы и другие элементы. Эти теги позволяют быстро и удобно находить определения с помощью текстового редактора, поисковой системы кода или других утилит. Также предусмотрен режим вывода, генерирующий файл перекрестных ссылок, содержащий информацию об именах, найденных в наборе файлов на различных языках, в удобочитаемом формате. Первоначальная версия Ctags была представлена в BSD Unix 3.0 и разработана Кеном Арнольдом, с поддержкой Fortran от Джима Клекнера и Pascal от Билла Джоя. Она входит в состав первоначальной спецификации Single Unix Specification и XPG4 1992 года.

Этаги

GNU Emacs поставляется с двумя утилитами ctags – etags и ctags, которые компилируются из одного и того же исходного кода. Etags генерирует файл таблицы тегов для Emacs, а команда ctags используется для создания аналогичной таблицы в формате, понятном для vi. У них разные наборы опций командной строки: etags не распознаёт и игнорирует опции, которые имеют смысл только для файлов тегов в стиле vi, создаваемых командой ctags.

"Обжигающие Ктаги"

Exuberant Ctags, написанный и поддерживаемый Дарреном Хибертом до 2009 года, изначально распространялся вместе с Vim, но стал самостоятельным проектом с выходом Vim 6. Он обеспечивает поддержку Emacs и совместимость с другими редакторами. Exuberant Ctags поддерживает более 40 языков программирования и позволяет добавлять поддержку новых с помощью регулярных выражений.

Универсальные Ctags

Universal Ctags — это ответвление от Exuberant Ctags, созданное с целью продолжения его разработки. Некоторые парсеры были переписаны для улучшения поддержки языков программирования.

Языковые особенности

создает файлы тегов, совместимые с ctags, для исходных файлов Haskell. Поддерживает создание файлов Emacs etags. Это решение для индексации кода, совместимое с ctags, для JavaScript. Оно оптимизировано для JavaScript и использует систему упаковки CommonJS. Оно работает быстрее, чем Exuberant Ctags, при обработке JavaScript-кода, находя больше тегов.

Форматы файлов тегов

Существует несколько форматов файлов тегов. Некоторые из них описаны ниже. Далее, обозначает байт с шестнадцатеричным представлением. Каждая строка заканчивается символом перевода строки (LF, = ).