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