PHP 系列:代码规范之 Code Sniffer

php code sniffer

有些同窗可能还没听过这东西,大概介绍一下:php

PHP_CodeSniffer 是一个代码风格检测工具。它包含两类脚本,phpcsphpcbfGitHub地址)。git

phpcs 脚本对 PHPJavaScriptCSS 文件定义了一系列的代码规范(一般使用官方的代码规范标准,好比 PHPPSR2),可以检测出不符合代码规范的代码并发出警告或报错(可设置报错等级)。github

phpcbf 脚本能自动修正代码格式上不符合规范的部分。好比 PSR2 规范中对每个 PHP 文件的结尾都须要有一行空行,那么运行这个脚本后就能自动在结尾处加上一行空行。json

安装

推荐使用 composer 来安装:bash

composer global require "squizlabs/php_codesniffer=*"

安装完后就会在全局的 Vendor 目录下的 bin 中生成两个软连接:并发

phpcbf -> ../squizlabs/php_codesniffer/bin/phpcbf
phpcs -> ../squizlabs/php_codesniffer/bin/phpcs

若是你不知道全局 Vendor 目录在哪,用下这个命令吧:composer

composer global config bin-dir --absolute

命令行使用

到这一步,其实你就能够愉快的使用这两个命令了:工具

哦,不过若是要全局使用这两个命令那仍是作个软连接放在 /usr/local/bin 下吧~ui

$ phpcs test.php

FILE: /Users/stephen/Develop/Code/test.php
--------------------------------------------------------------------------------------------
FOUND 2 ERRORS AFFECTING 2 LINES
--------------------------------------------------------------------------------------------
 2 | ERROR | [ ] Missing file doc comment
 3 | ERROR | [x] TRUE, FALSE and NULL must be lowercase; expected "false" but found "FALSE"
--------------------------------------------------------------------------------------------
PHPCBF CAN FIX THE 1 MARKED SNIFF VIOLATIONS AUTOMATICALLY
--------------------------------------------------------------------------------------------

Time: 45ms; Memory: 4Mb

$ phpcbf test.php

PHPCBF RESULT SUMMARY
----------------------------------------------------------------------
FILE                                                  FIXED  REMAINING
----------------------------------------------------------------------
/Users/stephen/Develop/Code/test.php                  1      1
----------------------------------------------------------------------
A TOTAL OF 1 ERROR WERE FIXED IN 1 FILE
----------------------------------------------------------------------

Time: 49ms; Memory: 4Mb

Sublime Text 中集成

安装插件

前提 Package Control 要安装好,这个你确定没问题的(莫名的自信,逃)spa

安装 phpcs 这个插件,而后打开这个插件的 Settings - UserSettings - Default,将后者的内容所有复制到前者。

配置插件

将如下这几个配置项配置一下:

当前环境中 php 的执行路径

"phpcs_php_prefix_path": "/usr/bin/php",

当前环境中 phpcs 的执行路径

"phpcs_executable_path": "~/.composer/vendor/bin/phpcs",

执行脚本时额外添加的参数,通常以 PSR2 代码规范做为标准,你也能够选择 PSR1PEAR

"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 settingsPHP Linter settingsPHP 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 中进行添加,下面是个人一个示例,基本能够照搬 :)

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

蜜汁延伸

以前没用 phpcbf,代码自动修复使用的是 php-cs-fixer,但后来发现二者功能差很少,因此秉着能少一个包就少一个包的原则,放弃了 php-cs-fixer

有兴趣的自行拓展了解~

相关文章
相关标签/搜索