TAGS dosyaları tanımları içerir
Bir TAGS
dosya, işlevlerin ve sınıfların tanımlandığı yerlerin listesini içerir. Genellikle bir projenin köküne yerleştirilir ve şuna benzer:
^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
Bu, Emacs'ın tanımları bulmasını sağlar. Temel gezinme yerleşiktir find-tag
, ancaketags-select
birden fazla eşleşme olduğunda daha güzel bir kullanıcı arayüzü sağlar.
Kod tamamlama için TAGS dosyalarını da kullanabilirsiniz. Örneğin, şirketin etags arka ucu TAGS dosyalarını kullanır .
TAGS dosyaları farklı araçlarla oluşturulabilir
ctags
(önceden 'evrensel ctag'ler' veya 'coşkulu ctag'ler' olarak biliniyordu) TAGS dosyaları oluşturabilir ve en geniş dil yelpazesini destekler. Aktif olarak github'da tutulur.
Emacs, TAGS dosyalarını oluşturan etags
ve adı verilen iki programla birlikte gelir ctags
. Emacs ctags
adildir etags
evrensel ctags aynı CLI arayüzü ile. Karışıklığı önlemek için, birçok dağıtım bu programları yeniden adlandırır (örn.ctags.emacs24
Debian'da).
TAGS dosyalarını oluşturmak için dile özgü araçlar da vardır, örneğin jsctags
vehasktags
.
Diğer dosya formatları
ebrowse
Emacs ile birlikte gelen bir C programıdır. C / C ++ kodunu indeksler ve bir BROWSE
dosya oluşturur . ebrowse.el olağan bulma tanımını ve tamamlanmasını sağlar. BROWSE
Kod tabanı tanımlı sınıflara / fonksiyona genel bir bakış için dosyayı doğrudan Emacs'ta da açabilirsiniz .
GNU Genel bir oluşmaktadır kendi veritabanı biçimi vardır GTAGS
, GRTAGS
ve GPATH
dosyanın. Bu dosyaları gtags
, C / C ++ kodunu ayrıştıran komutla oluşturabilirsiniz. Diğer diller için, GNU Global evrensel ctag'ler tarafından oluşturulan dosyaları okuyabilir.
GNU Global ayrıca, 'bu sembolden nerede bahsediliyor?' Gibi daha karmaşık sorular sormak için bir CLI arayüzü sağlar. Emacs paketi gtags.el ile birlikte gelir, ancak ggtags.el aynı zamanda GNU Global veritabanlarına erişim için de popülerdir.
Cscope özü itibariyle GNU Global'e benzer: C / C ++ 'yı kendi veritabanı biçimine ayrıştırır. Ayrıca 'bu işleve ait tüm arayanları / arayanları bul' gibi soruları da yanıtlayabilir.
Global ve cscope'u karşılaştıran bu HN tartışmasına da bakın .
İstemci / Sunucu projeleri
rtags , kalıcı bir sunucu kullanarak C / C ++ ' yı ayrıştırır ve dizine ekler . Clang ayrıştırıcısını kullanır, dolayısıyla C ++ 'yı gerçekten iyi kullanır. Sunucuyu sorgulamak için bir Emacs paketi ile birlikte gelir.
google-gtags , büyük bir TAGS dosyasının bir sunucuda depolanacağı bir projeydi. Sunucuyu sorguladığınızda, aramanızla alakalı TAGS dosyasının bir alt kümesini sağlar.
Anlamsal (CEDET)
Anlamsal, C / C ++ için bir ayrıştırıcı içeren yerleşik bir Emacs paketidir, böylece tanımları da bulabilir. Ayrıca TAGS dosyalarından, csope veritabanlarından ve diğer kaynaklardan verileri içe aktarabilir. CEDET ayrıca bu verileri kullanan, örneğin sınıf hiyerarşilerinin UML diyagramlarını oluşturan IDE stili işlevselliğini de içerir.
GTags
sen bağlantılı proje oldukça öldü. Birisi hakkında konuşuyorsagtags
, muhtemelen GNU Global'den bahsediyordur.