PHP 7底层设计与源码实现
上QQ阅读APP看书,第一时间看更新

1.3 PHP 7源码阅读工具介绍

在研究PHP 7源码之前,我们首先要掌握学习源码的方法论。首先是阅读工具,本章会介绍Windows下的Source Insight、Mac下的Understand以及Linux下的Vim+Ctags,方便读者根据自己的操作系统选择不同的阅读工具。

1.3.1 Source Insight

Windows环境下有一款功能强大的IDE: Source Insight,内置了C++代码分析功能;同时还能自动维护项目内的符号数据库,使用非常方便。安装过程这里不再赘述,下边来看看具体的使用过程。

安装完成以后,打开后的界面如图1-2所示。

图1-2 Source Insight示意图

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

图1-3 创建一个工程

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

图1-4 选择代码的目录

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

图1-5 完成工程创建

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

图1-6 阅读代码

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

图1-7 显示函数的调用关系

关于Source Insight的介绍就先到这里。读者可以自己安装体验一下其强大的功能。下面介绍下Mac环境下的阅读工具Understand。

1.3.2 Understand

Understand是Mac平台下一款功能强大的IDE,具备代码依赖、图形化等实用功能。安装过程这里也不再赘述了,下边来看看具体的使用过程。

Understand打开后如图1-8所示。

图1-8 Understand示意图

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

图1-9 创建一个工程

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

图1-10 选择项目代码语言

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

图1-11 确定如何导入文件和设置

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

图1-12 选择要导入的文件目录

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

图1-13 代码分析

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

图1-14 生成调用关系

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

图1-15 查看函数的调用关系

Understand还有很多非常有用的功能,在这里就不再一一列举了,大家可以自己实践一下。接着来介绍一下Linux下强大的代码阅读工具Vim。

1.3.3 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还有很多强大的功能,限于篇幅就不再一一列举了。