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

mojikyo45_640-2.gif

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”。

mojikyo45_640-2.gif

请用汉语将以下内容进行同义转述,只需提供一种选项:

“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

广告
将在 10 秒后关闭
bannerAds