Phan:静态语法分析工具
前言
公司项目需要升级到php7,存在的最大问题是如何保证语法兼容性问题,人工一个一个页面点击来看是否有报错这个是不现实的。需要一个工具来自动检测项目是否有不兼容php7的语法。于是,用到了phan。
什么是phan
phan是一个静态语法兼容性工具,它可以分析语法是否符合指定php版本,并将结果输出到指定文件。phan可以让我们在升级的过程中,尽可能的避免语法不兼容的问题,并且也可以在平时的项目开发过程中确保项目代码质量,避免一些不符合规范的语法出现。有关phan的用法参考:https://packagist.org/packages/phan/phan
安装phan
最简单的安装方式composer: composer global require phan/phan
注意,安装phan之前,需要安装php-ast扩展,否则会报错:
安装php-ast扩展:
pecl install ast
安装完之后,会在/~/.composer/vendor/bin目录下看到如下文件:
ok,安装成功。
配置config.php
要运行phan,需要创建config.php文件,文件指定了当前php版本,静态分析的目录,忽略的目录,使用的插件等。在对应的项目下,创建./phan目录,将config.php文件放入此目录下。我的config.php如下:
开始分析
进入phan所在的目录,执行命令进行语法分析。
该命令表示根据/***/.phan/config.php配置文件,执行静态语法分析,并将结果输出到/***/.phan/output文件下。
-k: 配置文件路径
-o:输出结果的文件
但是这种方式输出的结果太多,很多都是无用的,加一个参数-y 10 表示只输出严重的错误
还有个参数也很必要,-i 表示忽略未定义的方法和类,在输出的结果中有很多这种报错,但是项目中是定义了类的,可能是由于命名空间的问题,导致phan无法找到,所以这种报错对我的程序没有影响,我也去掉了。
总结
在执行命令过程中需要用到哪些参数跟你的项目有关,先放开条件,再慢慢的筛选掉一些没有影响的输出,逐步的调整,最后只剩下一些严重需要调整的报告。