PHP_CodeSniffer规范WordPress代码

WordPress有自己的代码格式标准,与PHP-FIG的PSR标准不一样。

这对于用了主流框架来说,会有些不适应。

不过我们可以用PHP_CodeSniffer来检测格式,写出“标准”的WordPress代码。

1 要求

WordPress使用PHP_CodeSniffer需要本地安装了:

  1. PHP5.2+
  2. PHP_CodeSniffer 2.9.0+(暂不支持3.0+)查看安装教程

2 让phpStorm支持phpcs

因为PHP_CodeSniffer默认没有WordPress代码规范,所以我们需要下载一个。

WordPress代码规范的Github仓库地址:https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards

1、切换到CodeSniffer的Standards目录下,然后克隆仓库到wpcs目录:

git clone -b master https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards.git wpcs

2、打开PHPStorm,选择菜单SettingsLanguages & FrameworksPHPCode Sniffer,然后从configuration下选择local。

再点击右边...的浏览按钮,然后配置phpcs文件的路径,保存(windows系统则选择phpcs.bat文件)。

3、以此选择 SettingsEditor → InspectionsPHP  → PHP Code Sniffer validation,再下拉选择 WordPress 规范。

说明:

如果 Code standard 列表中没有WordPress,则下拉选择Custom,然后点...预览按钮。

在弹出框中选择第1步的...\Standards\wpcs下的WordPress目录,然后点Refresh刷新。

4、再回到编辑器,如果代码不符合规范,鼠标旁边就会有提示了。

5、如果要全面监测,选择菜单 Code Inspect Code 就会列出检查的结果。

3 用phpcbf自动修正代码

1、打开菜单 SettingsToolsExternal Tools,点击 + 添加。

对话框配置如下:

 

  • Name:配置名称
  • Description:描述
  • Program:phpcbf的路径,windows系统用phpcbf.bat文件。
  • Parameters:参数,后面会解释。
  • Working directory:工作目录,这里用 $ProjectFileDir$。

2、这里我们创建3个配置。

一个用来修正单个文件;

一个用来修正当前目录下的所有php文件(包含子目录);

一个用来修正当前目录下的所有php文件(包含子目录)。

如下是另外两个配置:

3、然后是phpcbf的参数,完整文档请看:PHP CodeSniffer documentation page

本例用到的参数:

  • –standard:规范名称或目录。
  • –extensions:要修正的的文件扩展名(多个用逗号分隔,仅修正目录时有用)。
  • -l: 当前目录,不递归。

和一些变量:

  • $FileDir$/$FileName$::仅当前目录
  • $FileDir$: 解析整个目录。

4、接下来还需要设置快捷键,菜单选择 SettingsKeymap,搜索“phpcbf”。

双击搜索结果,选择“Add keyboard shortcut”,然后输入键盘,例如“Ctrl + Alt + /”:

返回代码界面,按下快捷键,phpcbf 就会自动修正,结果如下。

windows系统会提示错误:

'diff' is not recognized as an internal or external command,
operable program or batch file.

在 Parameters 栏中加上 --no-patch 就可以了。

 

参考资料:

  1. PHP Code Sniffer with WordPress Coding Standards Integration in PhpStorm

  2. Run PHP CodeSniffer code beautifier and fixer from PhpStorm
  3. Win 8.1 diff error