为什么PHP CodeSniffer正在冻结



我是一名初级程序员。我们的网站是用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

最新更新