gonzui和cscope的内容介绍

gonzui和cscope的内容介绍

记得第一次见到 LXR (http://lxr.linux.no) 的时候,惊艳的感觉不是我这几枚长着茧的手指和磨秃的键盘可以描绘的。原来阅读代码竟然可以是这样一件赏心悦目的事情。当时 LXR 稳定版是 0.3-series,开发版是 0.9-series,但是我尝试安装过几次,经历了反复的尝试,最终……仍然未能成功。
之后我对 Linux 内核代码的阅读仅限于使用在线 lxr。但是在线版 lxr 从 2.6.11 之后再也没有更新过,开发也几乎停滞不前。使用 emacs + tags 阅读源码又不是那么称心如意。
这两天在网上闲逛,忽然“撞见”了 cscope 和 gonzui。前一个是 console 下的、基于 curses 的代码查询工具,优点是界面直观,操作上手非常迅速,对 vi 和 emacs 的良好集成度,而且索引制作速度相当的快。缺点是无法查找宏的定义。后者 gonzui 是一个与 LXR 非常相似的项目,基于 web 界面的 source indexer。基于 Ruby,Gonzui 界面周身充满了日式的优雅。可以说,在我见过的开源 Web 程序中,Gonzui 的默认配置是相当赏心悦目的。Gonzui 支持多种语言,包括 C/C++, Ruby, Perl, shell 和 free text。最大的优点是,Gonzui 的配置非常简单——或者这么说,Gonzui 是不需要配置的。Zero-configuration!检索一份代码,你需要做的就是找一个具有足够空间的、具有写入权限的目录,然后运行
$ gonzui-import /path/to/source

然后 Gonzui 会在当前目录下创建 gonzui.db 目录,其中就包含了生成的索引文件。索引生成完成之后,执行

$ gonzui-server

就可以启动 gonzui 的 web 服务。服务端口会在开始的时候输出。Web 界面非常简洁清晰,是我喜欢的淡雅风格。

Gonzui 检索代码的速度比 cscope 略慢,但是比 LXR 迅速许多。linux-2.6.17 源码解包后占用磁盘空间 317M (未编译),gonzui 检索生成共用去不足两个小时。但是,得到的索引文件体积接近 1G。

Gonzui 的缺点在于文档不足。基本使用完全不需要文档,在命令行后加 --help 就可以得到基本足够的帮助。但是,我想要做目录排除的时候,不论在 --help 提示下、源码包中和网站都没有找到相关的文档,最后被迫后宫裁减代码树完成。同时,一个 gonzui 的数据库只应该加入一个项目,否则它会将历次加入的源码作为同一个项目进行交叉索引。

Cscope 是许多 Linux 发行版都会带的标准组建。Gonzui 项目主页:http://gonzui.sourceforge.net 。在 Fedora Core 4 安装需要 db4、ruby、ruby-devel 和 ruby-libs (可通过 yum 安装)和 Ruby BDB (db4 接口)。最后一个需要自己在 RAA 网站下载源码编译,但是总的来说,不算费事。