Os arquivos TAGS contêm definições
Um TAGS
arquivo contém uma lista de onde as funções e classes são definidas. Geralmente é colocado na raiz de um projeto e tem a seguinte aparência:
^L
configure,3945
as_fn_success () { as_fn_return 0; }^?as_fn_success^A180,5465
as_fn_failure () { as_fn_return 1; }^?as_fn_failure^A181,5502
as_fn_ret_success () { return 0; }^?as_fn_ret_success^A182,5539
as_fn_ret_failure () { return 1; }^?as_fn_ret_failure^A183,5574
Isso permite que o Emacs encontre definições. A navegação básica é integrada com find-tag
, masetags-select
fornece uma interface do usuário mais agradável quando há várias correspondências.
Você também pode usar arquivos TAGS para autocompletar código. Por exemplo, o back-end etags da empresa usa arquivos TAGS .
Os arquivos TAGS podem ser construídos por diferentes ferramentas
ctags
(anteriormente conhecido como 'ctags universais' ou 'ctags exuberantes') pode gerar arquivos TAGS e suporta a mais ampla variedade de idiomas. Ele é mantido ativamente no github.
O Emacs vem com dois programas que geram arquivos TAGS, chamados etags
e ctags
. Emacs ' ctags
é apenas etags
com a mesma interface CLI que ctags universais. Para evitar confusão, muitas distros renomeiam esses programas (por exemplo,ctags.emacs24
no Debian).
Existem também ferramentas específicas de idioma para gerar arquivos TAGS, como jsctags
ehasktags
.
Outros formatos de arquivo
ebrowse
é um programa C fornecido com o Emacs. Ele indexa o código C / C ++ e gera um BROWSE
arquivo. ebrowse.el fornece a definição e o preenchimento habituais de localização. Você também pode abrir o BROWSE
arquivo diretamente no Emacs para obter uma visão geral das classes / funções definidas em uma base de código.
GNU Global tem seu próprio formato de banco de dados, que consiste em um GTAGS
, GRTAGS
eGPATH
arquivo. Você pode gerar esses arquivos com o gtags
comando, que analisa o código C / C ++. Para outras linguagens, GNU Global pode ler arquivos gerados por ctags universais.
GNU Global também fornece uma interface CLI para fazer perguntas mais sofisticadas, como 'onde este símbolo é mencionado?'. Ele vem com um pacote Emacs gtags.el, mas ggtags.el também é popular para acessar bancos de dados GNU Global.
Cscope é semelhante em espírito ao GNU Global: ele analisa C / C ++ em seu próprio formato de banco de dados. Ele também pode responder a perguntas como 'localizar todos os chamadores / chamadas desta função'.
Veja também esta discussão HN comparando global e cscope .
Projetos cliente / servidor
rtags analisa e indexa C / C ++ usando um servidor persistente. Ele usa o analisador clang, portanto, lida muito bem com C ++. Ele vem com um pacote Emacs para consultar o servidor.
google-gtags era um projeto em que um grande arquivo TAGS seria armazenado em um servidor. Quando você consultasse o servidor, ele forneceria um subconjunto do arquivo TAGS que era relevante para sua pesquisa.
Semântica (CEDET)
O Semantic é um pacote Emacs embutido que contém um analisador para C / C ++, então ele também pode encontrar definições. Ele também pode importar dados de arquivos TAGS, bancos de dados csope e outras fontes. CEDET também inclui funcionalidade de estilo IDE que usa esses dados, por exemplo, geração de diagramas UML de hierarquias de classes.
GTags
projeto ao qual você vinculou está morto. Se alguém está falando sobregtags
, provavelmente está se referindo ao GNU Global.