我是一名初级程序员。我们的网站是用PHP 4编写的。我们正在从PHP 4迁移到PHP 5.3。大约595个目录中有5000个PHP文件。所以,正如你所能想象的,这个项目的范围是相当大的。
我们使用Subversion进行版本控制。我有两个单独的结账处。我有两个虚拟机作为独立的网络主机-一个堆栈模拟我们实际的网络服务器(CentOS 4、PHP4等),另一个是PHP 5.3堆栈(Ubuntu 12.04 LTS)。
我花时间使用以下命令检查文件中的基本语法错误:
编辑:我从网站的根目录运行了以下递归搜索。
find ./ -type f -name *.php -exec php -l {} ; < ~/php5_basic_syntax_assessment.txt
find ./ -type f -name *.inc -exec php -l {} ; < ~/php5_basic_syntax_inc_assessment.txt
我意识到,使用php-l检查基本语法不会显示不推荐使用的代码结构/函数,也不会提供警告(IE:使用preg_slice()而不是slice(())。因此,我决定安装PHP CodeSniffer。
首先,我安装了PEAR:[我接受了所有默认参数]
cd ~/
mkdir pear
cd pear
wget http://pear.php.net/go-pear.phar
php go-pear.phar
接下来,我安装了git:
cd ~/
sudo apt-get update
sudo apt-get install git
接下来,我安装了PHP代码嗅探器
pear install PHP_CodeSniffer
最后,我为PHP代码嗅探器安装了以下PHP 5.3兼容性标准:
git clone git://github.com/wimg/PHP53Compat_CodeSniffer.git PHP53Compatibility
我做了以上所有的工作,这样我就可以以一种自动化的方式评估5K PHP文件。检查每个文件以确保它们手动遵循PHP5.3编码标准将是非常乏味和耗时的。
最后,这里是我用来运行PHP代码嗅探器的命令:
phpcs --standard=/home/my_user_name/PHP53Compatibility -p --report-file=/home/my_user_name/php53_assessment.txt /path/to/web/root
为了确保特定的标准不是问题,我还使用默认标准运行了PHP代码嗅探器:
phpcs -p --report-file=/home/my_user_name/php53_assessment.txt /path/to/web/root
不管怎样,报告都冻结在同一个地方。我已经醒了24个多小时了。我等了18个小时才用CTRL+C停止第一次跑步。第二台仍在运行,已经运行了大约一个半小时。
那么,是什么导致我的PHP代码嗅探器冻结了呢?
我们非常感谢所有的帮助。
有点晚了,但我遇到了同样的问题。将文件限制为仅PHP文件即可:phpcs -p -- ./**/*.php