PHPCS
PHP Code Sniffer 简称 phpcs,用来检查你写的PHP是否符合 PSR-2 ,若完全符合则没有任何结果,若有任何错误将显示错误报告。
这适合帮我们检查Legacy PHP是否符合PSR-2。
-
安装
composer global require 'squizlabs/php_codesniffer=* 或 pear install PHP_CodeSniffer
-
测试
root@ykj-sp-test:~# phpcs --version PHP_CodeSniffer version 3.0.2 (stable) by Squiz(http://www.squiz.net) root@ykj-sp-test:~#
如果 MacOS 报错:
PHP Warning: include_once(PHP/CodeSniffer/autoload.php): failed to open stream: No such file or directory in /usr/local/bin/phpcs on line 14 PHP Warning: include_once(): Failed opening 'PHP/CodeSniffer/autoload.php' for inclusion (include_path='.:/usr/share/pear') in /usr/local/bin/phpcs on line 14 PHP Fatal error: Uncaught Error: Class 'PHP_CodeSniffer\Runner' not found in /usr/local/bin/phpcs:17
php.ini 引入 pear:
echo 'include_path = ".:'`pear config-get php_dir`'"' | sudo tee -a /etc/php.ini
-
检查PSR-2
phpcs --standard=PSR2 XXX/app
- XXX 为你的项目名称,一般我们写的 code 都在 app 目录下,所以直接指定 PHP Code Sniffer 帮我们检查 app 目录下所有的 .php 文件。
- PHP Code Sniffer 预设的 coding style 为 PEAR,因为我们用的是 PSR-2,所以要特别使用加上 --standard=PSR2。
PHP-CS-Fixer
PHP Coding Standards Fixer 简称 php-cs-fixer。
虽然PHP Code Sniffer可以帮我们找出哪些code不符合PSR-2,若只有几个文件,我们手动改就可以,若文件太多,就得依赖 php-cs-fixer 帮我们修正。
-
安装
composer global require fabpot/php-cs-fixer
-
测试
root@ykj-sp-test:~# php-cs-fixer --version PHP CS Fixer 2.5.0 Ancient Lizard by Fabien Potencier and Dariusz Ruminski (63aad57) root@ykj-sp-test:~#
-
修正PSR-2
php-cs-fixer fix Laravel/app/ --rule=@PSR2 --verbose
- rule=@PSR2 指定使用PSR-2标准来修正我们的 code。
- verbose 表示 PHP-CS-Fixer 在执行时,会显示出详细的结果。
PHPStorm 配置
PhpStorm对于PSR-2有以下支持 :
- 原生支持PSR-2
- 可外挂PHP Code Sniffer,让我在写 code 的同时就可提醒我们是否符合 PSR-2
- 可外挂PHP Coding Standards Fixer,将 code 修正为PSR-2
1、设置使用PSR-2规范
Preferences -> Editor -> Code Style -> PHP : Set from… -> Predefined Style : PSR1/PSR2
还可以在psr-2的基础上继续设置自己的规则。
2、设置phpcs
A. Preferences -> Languages & Frameworks -> PHP -> Code Sniffer
PS:这里以我的phpcs路径为例:/usr/local/bin/phpcs
B. Preferences -> Editor -> Inspections
将PHP Code Sniffer validation 打勾。
将Coding standard选PSR2。
3、php-cs-fixer
Tools -> External Tools 添加 php-cs-fixer
Program:
/usr/local/bin/php-cs-fixer
Arguments:
fix $FileDir$/$FileName$ --rules=@Symfony,@PSR1,@PSR2
Working Directory:
$ProjectFileDir$
不实用缓存 --using-cache no
排除自己不想应用的规则,在规则前加上"-"即可