PHP_CodeSniffer 是一个代码风格检测工具。它包含两类脚本,phpcs 和 phpcbf(GitHub 地址)。
phpcs 脚本对 PHP、JavaScript、CSS 文件定义了一系列的代码规范(通常使用官方的代码规范标准,比如 PHP 的 PSR2),能够检测出不符合代码规范的代码并发出警告或报错(可设置报错等级)。
phpcbf 脚本能自动修正代码格式上不符合规范的部分。比如 PSR2 规范中对每一个 PHP 文件的结尾都需要有一行空行,那么运行这个脚本后就能自动在结尾处加上一行空行。
https://github.com/squizlabs/PHP_CodeSniffer/wiki/Fixing-Errors-Automatically
PHP_CodeSniffer是一个检查程式码是否符合标准的工具,里面有两个PHP脚本,phpcs,phpcbf。
phpcs(PHP Code Sniffer):检查程式码标准。
phpcbf(PHP Code Beautifier and Fixer):修正不符合标准的程式码。
安装
有几种方法来安装PHP_CodeSniffer
直接下载Phar档
curl -OL https://squizlabs.github.io/PHP_CodeSniffer/phpcs.phar
php phpcs.phar -h
curl -OL https://squizlabs.github.io/PHP_CodeSniffer/phpcbf.phar
php phpcbf.phar -h
用Composer安装
composer global require “squizlabs/php_codesniffer=*”
./vendor/bin/phpcs -h
./vendor/bin/phpcbf -h
安装完后就会在全局的 Vendor 目录下的 bin 中生成两个软链接:
phpcbf -> ../squizlabs/php_codesniffer/bin/phpcbf
phpcs -> ../squizlabs/php_codesniffer/bin/phpcs
如果你不知道全局 Vendor 目录在哪,用下这个命令吧:
composer global config bin-dir –absolute
显示版本资讯
$ phpcs –version
显示已安装的程式码标准
$ phpcs -i
以PSR-2检查
$ phpcs –standard = PSR2 / path / to / code /
显示差异报告
$ phpcs –report = diff / path / to / code
输出差异报告文件
$ phpcs –report-diff = / path / to / changes.diff / path / to / code
忽略档案或目录
$ phpcs –ignore = / path,code.php / path / to / code /
设定设定档值
$ phpcs –config-set
$ phpcs –config-show
$ phpcs –config-delete
phpcbf
以PSR-2修正档案
$ phpcbf –standard = PSR2 / path / to / code /
不影响现有档案新增加上.fixed的修正档案
$ phpcbf –suffix = .fixed / path / to / code /
phpcs
PhpStorm也有支持PHP_CodeSniffer,随时检查程式码有没有符合标准。
设定
Languages & Frameworks> PHP> Code Sniffer>…
新增phpcs路径,按后Validate验证是否正确
Windwos系统要指向phpcs.bat
如果直接下载phar档没有.bat,自己生一个
echo @php“%~dp0phpcs.phar”%*> phpcs.bat
Editor> Inspections里PHP> PHP Code Sniffer validation,
打勾并设定Coding standrad PSR2
Sublime Text 中集成
安装插件
前提 Package Control 要安装好,这个你肯定没问题的(莫名的自信,逃)
安装 phpcs 这个插件,然后打开这个插件的 Settings - User 和 Settings - Default,将后者的内容全部复制到前者。
配置插件
将以下这几个配置项配置一下:
当前环境中 php 的执行路径
“phpcs_php_prefix_path”: “/usr/bin/php”,
当前环境中 phpcs 的执行路径
“phpcs_executable_path”: “~/.composer/vendor/bin/phpcs”,
执行脚本时额外添加的参数,一般以 PSR2 代码规范作为标准,你也可以选择 PSR1、PEAR 等
“phpcs_additional_args”: {
“–standard”: “PSR2”,
“-n”: “”
},
当前环境中 phpcbf 的执行路径
“phpcbf_executable_path”: “/Users/stephen/.composer/vendor/bin/phpcbf”,
开启保存就执行 cbf 脚本功能
“phpcbf_on_save”: true,
现在就可以愉快的玩耍了,编辑完 .php 后缀的文件保存后就会自动回复修正代码不规范的地方。
这个插件还有其他代码规范可以设置的地方,比如 PHP Mess Detector settings、PHP Linter settings、PHP Scheck settings
下次在研究其他几个,目前是够我用了,逃)
PhpStrom 中集成
配置 Code Sniffer
在 Settings -> Languages & Frameworks -> PHP -> Code Sniffer 中对 phpcs 进行配置
点击 Configuration: Local 旁边的 …,将当前环境的 phpcs 执行脚本所在路径配置进去,旁边有一个 Validate 按钮可以进行验证,其他两个参数默认就好,这里也稍微说一下吧。
Maxumum number of messages per file[1…100]:每个文件最多显示不符合代码规范的条数,一般出现 50 个了那你有很多工作可以做了,其实 10 个就够了,尤其对我这种代码洁癖和强迫症晚期的人来说一个足矣 。。。
Tool process timeout, sec[1…30]:脚本执行的超时时间
开启验证
在 Settings -> Editor -> Inspections 中进行开启
找到 PHP -> PHP Code Sniffer validation 选项,对其打钩,在右侧进行详细配置
我是将 Options -> Show warnings as: Error 开启了,当然你也可以选择 Warnning,提示级别高一点能够强迫自己,没啥不好的吧~
Coding standard 依旧是选择 PSR2,如果找不到这个选项,记得点一下紧挨着的刷新按钮。
自动修复
我找了半天没发现 PhpStrom 有支持 phpcbf 的可用选项,所以只能通过 External Tools 来实现了。
在 Settings -> Tools -> External Tools 中进行添加,下面是我的一个示例,基本可以照搬 :blush:
Parameter Value
Name phpcbf
Description Automatically correct coding standard violations.
Program phpcbf
Parameters –standard=PSR2 “$FileDir$/$FileName$”
现在就可以在菜单栏上的 Tools -> External Tools 中找到它并愉快的使用了。
亮哥,这样很不方便诶。。。
那就加一个快捷键把。。。
在 Settings -> Keymap -> External Tools -> phpcbf 中进行添加快捷键操作,我设置的是 Option + F,或者 Windows 上的 Alt + F。