Введение
Ctags – это инструмент программирования для облегчения понимания кода. Он генерирует индексный файл (или файл тегов) с перечнем имен, обнаруженных в исходных и заголовочных файлах различных языков программирования. В зависимости от языка, в индекс могут включаться функции, переменные, члены классов, макросы и другие элементы. Эти теги позволяют быстро и удобно находить определения с помощью текстового редактора, поисковой системы кода или других утилит. Также предусмотрен режим вывода, генерирующий файл перекрестных ссылок, содержащий информацию об именах, найденных в наборе файлов на различных языках, в удобочитаемом формате. Первоначальная версия Ctags была представлена в BSD Unix 3.0 и разработана Кеном Арнольдом, с поддержкой Fortran от Джима Клекнера и Pascal от Билла Джоя. Она входит в состав первоначальной спецификации Single Unix Specification и XPG4 1992 года.
Ctags is a programming tool that generates an index file (or tag file) of names found in source and header files of various programming languages to aid code comprehension. Depending on the language, functions, variables, class members, macros and so on may be indexed. These tags allow definitions to be quickly and easily located by a text editor, a code search engine, or other utility. Alternatively, there is also an output mode that generates a cross reference file, listing information about various names found in a set of language files in human readable form. The original Ctags was introduced in BSD Unix 3.0 and was written by Ken Arnold, with Fortran support by Jim Kleckner and Pascal support by Bill Joy. It is part of the initial release of Single Unix Specification and XPG4 of 1992.
Этаги
GNU Emacs поставляется с двумя утилитами ctags – etags и ctags, которые компилируются из одного и того же исходного кода. Etags генерирует файл таблицы тегов для Emacs, а команда ctags используется для создания аналогичной таблицы в формате, понятном для vi. У них разные наборы опций командной строки: etags не распознаёт и игнорирует опции, которые имеют смысл только для файлов тегов в стиле vi, создаваемых командой ctags.
etags does not recognize and ignores options which only make sense for vi style tag files produced by the ctags command.
"Обжигающие Ктаги"
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, = ).