Ctags - Ctags

Ctags (BSD)
Разработчики)Кен Арнольд
Репозиторий Отредактируйте это в Викиданных
Операционная системаUnix и Unix-подобный
ТипИнструмент программирования (В частности: инструмент навигации по коду)
ЛицензияBSD

Ctags это инструмент программирования что порождает показатель (или теговый) файл имен, найденных в исходных и заголовочных файлах различных языки программирования помочь понимание кода. В зависимости от языка, функции, переменные, класс члены, макросы и так далее могут быть проиндексированы. Эти теги позволяют быстро и легко находить определения Текстовый редактор, поисковая машина кода или другая утилита. В качестве альтернативы есть также режим вывода, который генерирует Перекрестная ссылка файл, содержащий информацию о различных именах, найденных в наборе языковых файлов в человек читаемый форма.

Оригинал Ctags был представлен в BSD Unix 3.0 и был написан Кен Арнольд, с участием Фортран поддержка Джима Клекнера и Паскаль поддержка со стороны Билл Джой. Это часть первоначального выпуска Единая спецификация Unix и XPG4 1992 года.

Редакторы, поддерживающие ctags

Файлы индекса тегов поддерживаются многими редакторы исходного кода, в том числе:

Варианты ctags

Есть еще несколько реализаций ctags программа:

Etags

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

Обильные Ctags

Обильные Ctags, написано и поддерживается Даррен Хиберт до 2009 г.,[2] изначально распространялся с Vim, но стал отдельным проектом после выпуска Vim 6. Он включает поддержку Emacs и etags совместимость.[3][4]

Exuberant Ctags включает поддержку более 40 языков программирования с возможностью добавления поддержки для еще большего использования обычные выражения.

Универсальные КТэги

Универсальные КТэги является форком Exuberant Ctags с целью продолжения его развития. Некоторые парсеры переписаны для лучшей поддержки языков.[5]

Зависит от языка

Hasktags создает файлы тегов, совместимые с ctags, для Haskell исходные файлы.[6] Он включает поддержку создания файлов Emacs etags.[7]

jsctags является ctags-совместимым решением для индексации кода для JavaScript.[8] Он специализируется на JavaScript и использует CommonJS система упаковки. Он превосходит Обильные Ctags для кода JavaScript - найти больше тегов, чем последний.[9]

Теги форматов файлов

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

Ктаги и потомки

Оригинал ctags и потомки Exuberant / Universal имеют похожие форматы файлов:[10]

Ctags

Это формат, используемый vi и различные клоны. Файл тегов обычно называется "теги".

Файл тегов представляет собой список строк, каждая строка в формате:

{название тэга}\т{tagfile}\т{tagaddress}

Поля указаны следующим образом:

  • {название тэга} - Любой идентификатор, не содержащий пробелов
  • \т - Ровно один вкладка (\x0b) персонаж, хотя многие версии vi может обрабатывать любое количество пустого пространства.
  • {tagfile} - Имя файла, в котором {название тэга} определяется относительно текущего каталога
  • {tagaddress} - An бывший команда mode, которая перенесет редактор в местоположение тега. Для реализаций POSIX vi это может быть только поиск или номер строки, обеспечивающий дополнительную защиту от произвольного выполнения команд.

Файл тегов отсортирован по {название тэга} поле, которое позволяет быстро искать файл тегов.

Расширенные Ctags

Это формат, используемый Vim Обильные Ctags и универсальные Ctags. Эти программы могут генерировать оригинальные ctags формат файла или расширенный формат, который пытается сохранить обратную совместимость.

Файл расширенных тегов представляет собой список строк, каждая строка в формате:

{название тэга}\т{tagfile}\т{tagaddress}[;"\т{tagfield...}]

Поля до включительно {tagaddress} такие же, как для ctags над.

Необязательные дополнительные поля обозначены квадратными скобками («[...]») и включают:

  • ;" - точка с запятой + двойная кавычка: завершает {tagaddress} таким образом, чтобы это выглядело как начало комментария к vi или бывший.
  • {tagfield} - поля расширения: пары «ключ: значение», разделенные табуляцией, для получения дополнительной информации.

Этот формат совместим с не-POSIX vi поскольку дополнительные данные интерпретируются как комментарий. POSIX реализации vi однако необходимо изменить, чтобы поддерживать его.[10]

Etags

Это формат, используемый Emacs etags. Файл тегов обычно называется «TAGS».

Файлы etags состоят из нескольких разделов - по одному на каждый входной исходный файл. Разделы представляют собой обычный текст с несколькими непечатаемыми символами ascii, используемыми для специальных целей. Эти символы представлены ниже в виде шестнадцатеричных кодов в квадратных скобках.

Раздел начинается с двухстрочного заголовка (первые два байта составляют магическое число ):

\x0c{src_file},{size_of_tag_definition_data_in_bytes}

За заголовком следуют определения тегов, по одному в каждой строке, в формате:

{tag_definition_text}\x7f{название тэга}\x01{номер строчки},{byte_offset}

{tagname} x01 может быть опущен, если имя тега можно вывести из текста в определении тега.

пример

Учитывая однострочный исходный код test.c:

#define CCC (x)

Файл TAGS (etags) будет выглядеть так:

\x0ctest.c, 21 # определить CCC (x7fCCC x011,0

Файл тегов (ctags) может выглядеть так:

CCC (test.c 1

или более гибко с помощью поиска:

CCC (test.c / ^ # define CCC (/

Смотрите также

использованная литература

  1. ^ etags.emacs (1) – Linux Общие команды Руководство по эксплуатации
  2. ^ "Обильные Ctags". ctags.sourceforge.net.
  3. ^ "Документация Vim: версия 6: ctags-Go". Получено 2007-04-28.
  4. ^ etags.ctags (1) – Linux Общие команды Руководство по эксплуатации
  5. ^ «Универсальная документация Ctags». Получено 2018-08-02.
  6. ^ «Документация GHC: Другие служебные программы Haskell». Получено 2010-03-05.
  7. ^ "hasktags: производит файлы ctags" tag "и etags" TAGS "для программ Haskell". Получено 2010-03-05.
  8. ^ "pcwalton github репозиторий для jsctags". Архивировано из оригинал на 22.08.2010. Получено 2016-09-10.
  9. ^ Патрик Уолтон. "Представляем jsctags". Получено 2010-05-25.
  10. ^ а б «Предложение по расширенному формату файлов тегов Vi». Получено 2007-06-30.

внешние ссылки