我是一名初级程序员,在那里工作。我们的网站是使用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 Code Sniffer
pear install PHP_CodeSniffer
最后,我为PHP Code Sniffer安装了以下PHP 5.3兼容性标准:
git clone git://github.com/wimg/PHP53Compat_CodeSniffer.git PHP53Compatibility
我做了以上所有操作,以便以自动方式评估5K PHP文件。浏览每个文件以确保它们手动遵循PHP 5.3编码标准将是非常繁琐和耗时的。
最后,这是我用来运行PHP Code Sniffer的命令:
phpcs --standard=/home/my_user_name/PHP53Compatibility -p --report-file=/home/my_user_name/php53_assessment.txt /path/to/web/root
为了确保特定标准不是问题,我还使用默认标准运行PHP Code Sniffer:
phpcs -p --report-file=/home/my_user_name/php53_assessment.txt /path/to/web/root
无论哪种方式,报告都冻结在同一个地方。我已经醒了超过24小时。我在使用CTRL + C停止第一次运行之前等了18个小时。第二个仍在运行,已经运行了大约一个半小时。
那么,是什么导致我的PHP Code Sniffer冻结?
非常感谢所有帮助。
答案 0 :(得分:2)
有点晚了,但我遇到了同样的问题。将文件限制为只有PHP文件才能解决问题:phpcs -p -- ./**/*.php