在Linux下面瀏覽代碼,一般都是Vim/Emacs加上tags和cscope的組合。但是,ctags和cscope程序在生成相應的索引文件時,一般都是默認查找項目中的所有文件,這樣就會在項目較大時造成索引文件過大的后果,比如Linux kernel,解壓縮之后有幾百M,如果完全索引,對應的ctags文件和cscope文件加起來也有一百多M,這樣間接的也造成了如果有新的文件加入項目中想重新生成索引文件時時間過長。當然可以使用find+grep命令指定需要查找的文件和目錄,把這些文件路徑寫入一個文件,然后再調用ctags和cscope根據該文件中記錄的文件來生成索引,但是畢竟這樣做麻煩。
mktags項目就是基于要上面需要解決的幾個問題而出現的,它的目的是可以讓使用者指定需要關注的項目路徑和文件類型,然后根據這些來生成索引文件。
目前發布了第一版0.1版本,支持以下的選項:
-a 指定需要添加的路徑名,如果有多個路徑,則路徑之間使用空格分隔
-t 指定需要添加的文件類型,比如.c,如果有多個類型,同樣也使用空格分隔
-i 指定根據路徑名和文件類型查找到的所有文件保存在哪個文件中的,默認是mktags.files
-r 指定項目的根路徑,默認為當前目錄
-h 打印幫助信息
比如,我可以在存放Linux kernel代碼的路徑中鍵入如下命令:
mktags -a include/ arch/ mm/ kernel/ ipc/ -t .c .h
表示我只關注 include.arch,mm,kernel,ipc下面的.c和.h文件
目前只具備以上基本的功能。代碼使用Python腳本編寫,在使用之前需要make install將mktags腳本安裝在/usr/bin中(需要root權限)就可以使用了。
我的設想是能結合curses編程做成類似make menuconfig的效果,能有一個GUI的菜單供使用者選擇需要關注的路徑和文件類型,一目了然。
項目地址在
:
http://code.google.com/p/mktags/