PHP 7 源码阅读工具介绍
在研究 PHP 7 源码之前,我们首先要掌握学习源码的方法论。首先是阅读工具,本章会介绍 Windows 下的 Source Insight、Mac 下的 Understand 以及 Linux 下的 Vim+Ctags
,方便读者根据自己的操作系统选择不同的阅读工具。
Source Insight
Windows 环境下有一款功能强大的 IDE: Source Insight,内置了 C++ 代码分析功能;同时还能自动维护项目内的符号数据库,使用非常方便。安装过程这里不再赘述,下边来看看具体的使用过程。
安装完成以后,打开后的界面如图1-2所示。

首先来创建一个工程,点击 Project,选择 New Project 命令,在弹出的窗口中输入工程名称和工程存档路径,如图1-3所示。

填写好后,点击 OK 按钮,在接下来的窗口中选择代码的目录,如图1-4所示。

选择完毕后继续点击 OK 按钮,在接下来的窗口右侧点击 Add All 按钮,在选择后弹出的窗口中勾选 recursively add lower sub-directories,点击 OK 按钮,IDE 开始扫描目录并添加文件,扫描完成后会在下边的窗口中显示添加到工程的文件。此时,点击 Close
按钮完成工程创建,如图1-5所示。

至此,工程就创建完了。点击工具栏上的 Project Window 按钮调出目录树就可以阅读代码了。如图1-6所示,可以看到左侧是代码中的符号列表,中间是编辑器,右侧是目录树。

Source Insight 可以非常方便地显示函数之间的调用关系,点击 Views→Relation Window 命令,可以看到界面右侧出现一个新的窗口,在编辑窗口点击某一个函数,即可在调用关系窗口中显示函数的调用关系,如图1-7所示。

关于 Source Insight 的介绍就先到这里。读者可以自己安装体验一下其强大的功能。下面介绍下 Mac 环境下的阅读工具 Understand。
Understand
Understand 是 Mac 平台下一款功能强大的 IDE,具备代码依赖、图形化等实用功能。安装过程这里也不再赘述了,下边来看看具体的使用过程。'
Understand 打开后如图1-8所示。

点击 New Project
来创建一个工程,在弹出的窗口中输入工程名称和工程存档路径,然后点击 Next
按钮,如图1-9所示。

接下来选择项目代码的语言,这里选择 C++
和 Web 即可。C++
后边的选项表示第一次代码分析的模式,然后继续下一步,如图1-10所示。

这一步是确定如何导入文件和设置,如果读者使用 Visual Studio 或者 CMake,那么选择对应的选项即可。这里选择第一个 Add source files and directories manually 单选按钮,然后继续下一步,如图1-11所示。

接下来选择要导入的文件目录,点击 Add a Drirectory 选项卡,在弹出来的窗口中选择目录和文件类型,可以选择要包含的多种文件类型到项目中,记得勾选 Include subdirectories 复选框,然后继续下一步,如图1-12所示。

之后一个项目就创建完了。Understand 会自动找到对应目录下的文件开始进行代码分析,如图1-13所示。

Unserstand 也可以为代码分析生成其调用关系图,如图1-14所示。

在某个函数上右击,选择 Graphical Views→Declaration 命令,可以看到该函数的调用关系,如图1-15所示。

Understand 还有很多非常有用的功能,在这里就不再一一列举了,大家可以自己实践一下。接着来介绍一下 Linux 下强大的代码阅读工具 Vim
。
Vim + Ctags
Linux 环境下可以使用 Vim+Ctags
来阅读代码。Ctags
是 Vim
下阅读代码的一个辅助工具,可以生成函数、类、结构体、宏等语法结构的索引文件,它的使用也非常简单,如下:
$ yum install ctags // Ubuntu下使用apt-get install ctags
$ cd /home/vagrant/php7/book/php-7.1.0/
$ ctags -R *
这一步,表示给当前目录下所有的文件(包含子文件)生成索引文件,执行完后可以看到当前目录下生成了一个 tags
文件:
$ ll tags
-rw-rw-r--1 vagrant vagrant 7.2M 11月 26 04:17 tags
$ pwd
/home/vagrant/php7/book/php-7.1.0/
打开 Vim
的配置文件将 tags
文件的目录添加进去:
$ vim ~/.vimrc
set tags=/home/vagrant/php7/book/php-7.1.0/tags
到这一步就完成了简单的配置。当使用 Vim
打开该项目的时候,Vim
会自动加载其索引文件,使用 Ctrl+]
和 Ctrl+O
快捷键就可以方便地跳转和跳回了。
Vim + Ctags
还有很多强大的功能,限于篇幅就不再一一列举了。