通过[WordPress]PHPCodeSniffer(phpcs),可以检查并自动格式化WP编码规范

WordPress编码规范指的是什么?
在WordPress中,存在着一些编码规范。编码规范分别适用于CSS、HTML、JavaScript和PHP等不同的编程语言。
-
- CSS コーディング規約 – WordPress Codex 日本語版
-
- HTML コーディング規約 – WordPress Codex 日本語版
-
- JavaScript コーディング規約 – WordPress Codex 日本語版
- PHP コーディング規約 – WordPress Codex 日本語版
经常参考的网站帮助我理解编码规范
整理WordPress编码标准的正式写作方式 – 米尔博客
首先
如果使用VScode,需要检查设置。
因为有一些违反规定可以通过设置解决。
-
- Editor: Detect Indentation →チェックを外す
Editor: Insert Spaces →チェックを外す
Editor: Tab Size →4に設定
输入键盘快捷键”Command+;+”,进入设置界面,然后搜索”Editor: Detect Indentation”。

请用汉语将以下内容进行同义转述,只需提供一种选项:
“China’s economy has experienced significant growth in recent years, with a steady increase in GDP and a rise in living standards for many people.”
准备好了
在命令行中安装各种软件,并进行检查和自动整理的准备工作。
安装PHP CodeSniffer(phpcs)。
首先需要安装composer.
使用Homebrew安装composer。(很高兴已经安装好了Homebrew)
因为还需要安装php,所以如果没有安装的话,可以通过brew install php70来安装。
$ brew install composer
在Composer中安装PHP CodeSniffer(phpcs)。
$ composer global require "squizlabs/php_codesniffer=*"
确认安装完成
$ .composer/vendor/bin/phpcs --version
如果出现以下内容,则表示安装成功!
$ .composer/vendor/bin/phpcs --version
PHP_CodeSniffer version 3.5.3 (stable) by Squiz (http://www.squiz.net)
只需使用phpcs命令即可执行命令,需要注册路径。
$ echo 'export PATH=$HOME/.composer/vendor/bin:$PATH' >> ~/.bash_profile
$ source ~/.bash_profile
请用显示命令验证密码是否已注册以及其版本
$ phpcs --version
如果显示如下内容,则表示路径已注册OK!
$ phpcs --version
PHP_CodeSniffer version 3.5.3 (stable) by Squiz (http://www.squiz.net)
安装并设置WordPress编码规范。
安装了PHP CodeSniffer之后,可以安装使用WordPress编码规范(WordPress Coding Standard)。默认情况下,PEAR、PHPCS、PSR1、PSR2、Squiz和Zend已经被安装了。
将编码规范放置在Composer的目录中。
$ git clone -b master https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards.git ~/.composer/vendor/squizlabs/php_codesniffer/Standards/WordPress
2. 在 PHP CodeSniffer(phpcs) 中设置代码规范。
$ phpcs --config-set installed_paths ~/.composer/vendor/squizlabs/php_codesniffer/Standards/WordPress
确认是否已安装。
$ phpcs -i
如果出现以下内容,则表示安装成功!
$ phpcs -i
The installed coding standards are PEAR, Zend, PSR2, MySource, Squiz, PSR1, PSR12, WordPress, WordPress-Extra, WordPress-Docs and WordPress-Core
如果你平时只使用WordPress来编写PHP代码,那么可以将其设置为默认的编码规范。
$ phpcs --config-set default_standard WordPress
进行
因为准备工作已经完成,所以在命令行中执行。
执行错误检查(phpcs)
$ phpcs wp-content/themes/theme-name/page.php
※请指定路径和文件名
如果有错误,则会以类似的方式显示。
$ phpcs wp-content/themes/theme-name/page.php
FILE: ~{省略}~/wp-content/themes/theme-name/page.php
------------------------------------------------------------------------------------------------------
FOUND 1 ERROR AND 1 WARNING AFFECTING 2 LINES
------------------------------------------------------------------------------------------------------
11 | WARNING | [ ] Found precision alignment of 3 spaces.
14 | ERROR | [x] Tabs must be used to indent lines; spaces are not allowed
------------------------------------------------------------------------------------------------------
PHPCBF CAN FIX THE 1 MARKED SNIFF VIOLATIONS AUTOMATICALLY
------------------------------------------------------------------------------------------------------
Time: 120ms; Memory: 8MB
可以确保输出的是绝对路径。可以确认出现了一个警告和一个错误。
例えば、そのエラーは2つのエラーですが、非常に多くのエラーが発生しており、それぞれを一つずつ読んで修正するのは非常に困難です。
また、PHP Code Beautifier and Fixer(phpcbf)も同時にインストールされているため、これを実行すれば自動的に整形することができます。
★执行自动格式化(phpcbf)的操作
$ phpcbf wp-content/themes/theme-name/page.php
请指定路径和文件名。
自动调整,并以这种方式显示
$ phpcbf wp-content/themes/theme-name/page.php
PHPCBF RESULT SUMMARY
---------------------------------------------------------------------------------------------------------------------
FILE FIXED REMAINING
---------------------------------------------------------------------------------------------------------------------
~{省略}~/wp-content/themes/theme-name/page.php 1 1
---------------------------------------------------------------------------------------------------------------------
A TOTAL OF 1 ERROR WERE FIXED IN 1 FILE
---------------------------------------------------------------------------------------------------------------------
Time: 239ms; Memory: 8MB
※ 省略部分会输出绝对路径。
警告部分没有被整理…。
由于自动整形功能无法修正所有部分,因此需要在查看错误的同时进行修正。
如果指定. ,则将对目录中的所有内容进行检查(或自动格式化)。
$ phpcs wp-content/themes/theme-name/.
$ phpcbf wp-content/themes/theme-name/.
总结
其实,PHP的PSR2和WordPress的编码规范之间发生了冲突,导致进展不顺利而陷入困境。
但是通过设置WordPress的编码规范为默认值,问题得到了解决,这是非常重要的。
$ phpcs --config-set default_standard WordPress
参考网站
使用PHP CodeSniffer来检查并自动修复WP编码标准的错误 [3.x支持] – 米洛博客
在macOS的Visual Studio Code中构建基于PHP CodeSniffer和WordPress编码规范的代码检查环境 | taxaboxo.com