Wednesday, February 1, 2012

GNU GLOBAL 作為分析基礎

GNU GLOBAL 作為分析基礎
by thinker
2 Columns
關鍵字:
coding
最近對程式碼分析 (reverse) 有一些想法,打算做一些小工具。如果從頭打造,大概得花個幾個月以上的時間,而且有許多現成的工具可以幫忙完成部分工作。其中最麻煩的工作大概就是 parse 程式碼, doxygen 已經做了我要的東西,應該直接利用就好了,但 doxygen 卻沒有輸出 raw data 。

本來打算看 doxygen 的程式碼,從中攔截,並輸出我要的資料,但意外中發現 GNU GLOBAL 。 GNU GLOBAL 是類似 ctags 的工具,但提供許多 command line 的命令,可以查詢 symbol 的出處,被 reference 的位置等等,正是我所要的資訊,又是 command line 工具,更易於整合。

雖然和 ctags 相似,但 ctags 只產生 DB ,卻沒有讀取 DB 的 command line 工具,另外 ctags 也沒有產生 reference 的資訊。各方面而言, GNU GLOBAL 都優於 ctags 。

GNU GLOBAL 本身,也提供了 bash 、 tcsh 、 nvi 、 vim 、 less ... 的整合。另外 GNU GLOBAL 也提供將程式碼輸出成 HTML 的功能,並產生 hyperlink 。更詳細的功能,請查閱

Reference:
http://www.codemud.net/~thinker/GinGin_CGI.py/show_id_doc/247
http://www.gnu.org/software/global/global.html

No comments: