没有相关工作经验,但对 ctags 很熟,强答一下 ![]()
通过一些技巧可以把内核的 tags 文件减到 500M 以下:
$ pwd
/yard/code/linux-5.17.9
$ ctags -n --languages=C,C++,KConfig,Asm,LdScript --extras=-{fileScope} -f .tags -R
$ du -BM .tags
449M .tags
这里的关键有二:
-
-n选项可以不生成 search pattern 而用行号代替,能节省不少空间。 -
--extras=-{fileScope}可以不生成具有 file scope(也就是从外面不能引用)的符号的 tag。
如果您不需要看某些文件夹的代码的话,可以把它们排除掉。比如排除 foo 文件夹:
--exclude=foo/*
不知道这个大小对您的工程可以接受吗 ![]()
然后就是不要用 Emacs 的 TAGS 格式,TAGS 格式不能做二分搜索,查定义很慢。可以用我的 Citre,支持 ctags 原本的 tags 格式,速度很快。