php7推出了语法树,于是静态语法分析更方便了。
1、先安装php7,到http://windows.php.net/下载php7带openssl的。
2、修改php.ini,
extension=php_openssl.dll
extension=php_sockets.dll
extension=php_sqlite3.dll
extension=php_pdo_sqlite.dll
前面的分号去掉,这一步是为了安装composer。
3、安装composer,我安装失败,直接下载composer.phar
新建一个批处理composer.bat
@echo off "%~dp0php.exe" "%~dp0composer.phar" %*
修改composer源为中国镜像,
composer config -g repo.packagist composer http://packagist.phpcomposer.com
4、安装php_ast模块,phan需要,把dll放到ext目录,
extension增加一行
extension=php_ast.dll
5、安装phan
打开命令行切换到php7的目录,运行
composer require --dev "etsy/phan:dev-master"
phan的详细使用可参考
https://github.com/etsy/phan
6、分析项目
新建一个批处理,比如,先分析F:\work\src下的php代码,再用sed删除没有用的提示。
@echo off set src=F:\work\src set phIn=%src%\phan_in.txt set phOut=%src%\phan_out.txt find %src% -type f -name "*.php" > %phIn% phan -f %phIn% -o %phOut% sed -i "/\Phalcon/d" %phOut% sed -i "/redis/d" %phOut% sed -i "/memcached/d" %phOut% sed -i "/vendor/d" %phOut% echo "语法检查已完成,请查看%phOut%" @pause
find和sed在windows下没有,不过有native的port,不需要cygwin和mingw
下载http://sourceforge.net/projects/unxutils/files/latest/download
和http://unxutils.sourceforge.net/UnxUpdates.zip。
解压后,用UnxUpdates覆盖UnxUtils\usr\local\wbin,取出sed和find即可。
7、可以为phan新建批处理和phan目录平级,phan.bat
@echo off "%~dp0php.exe" "%~dp0phan\phan" %*
把php.exe所在目录放入环境变量PATH里,这样可以配置一些ide,调用phan.bat检查当前代码。