PHP开发规范之使用phpcbf脚本自动修正代码格式

在前段时间的文章:在PhpStorm中安装使用PHP_CodeSniffer编码规范检查工具中提到过phpcbf脚本

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

今天就说一下这个脚本怎么集成在PhpStorm中,方便我们使用

安装

看过之前文章的同学应该已经都安装了,没看过的去看一下之前的文章,使用pear 安装PHP_CodeSniffer

安装成功后,你的PHP根目录中会有多出一些文件,包括以下文件:

phpcbf
phpcbf.bat
phpcs
phpcs.bat

使用

先说一点,phpcbf只能处理代码风格等方式,而不能帮你处理里面的命名与代码实现规则,所以有少部分还需要人为去更正,但并不会太多,强迫症勿纠结

命令行模式

这里也提一下phpcs的使用,一般来说我们都会把 PHP 加入环境变量,phpcbfphpcs在 PHP 的目录下,所以可以直接使用命令行去操作,如果不行的话,添加一下环境变量

设置默认标准

phpcs默认的编码格式并不是php-cs,所以当不指定标准的时候,检测的结果并不准确,但每次都手动指定也挺麻烦,所以可以设置一个默认标准,命令如下:

phpcs --config-set default_standard PSR2
phpcbf --config-set default_standard PSR2

实操

然后我们来实际操作一下,先准备一个PHP文件,文件里面的内容如下代码示例,可以看出这份代码并不符合PSR-2的风格规范

<?php

function test_test(){
    echo 'sy-records';
}
 
 
test();

使用命令来检测一下

phpcs D:/phpStudy/WWW/test.php

命令执行完成之后,可以看到如下代码提示,在提示中就能看到具体哪一行,提示级别,以及具体的提示原因

--------------------------------------------------------------------------------
FOUND 4 ERRORS AND 1 WARNING AFFECTING 4 LINES
--------------------------------------------------------------------------------
1 | WARNING | [ ] A file should declare new symbols (classes, functions,
  |         |     constants, etc.) and cause no other side effects, or it
  |         |     should execute logic with side effects, but should not do
  |         |     both. The first symbol is defined on line 3 and the first
  |         |     side effect is on line 7.
1 | ERROR   | [x] End of line character is invalid; expected "\n" but found
  |         |     "\r\n"
3 | ERROR   | [x] Opening brace should be on a new line
4 | ERROR   | [x] Spaces must be used to indent lines; tabs are not allowed
7 | ERROR   | [x] Expected 1 newline at end of file; 0 found
--------------------------------------------------------------------------------
PHPCBF CAN FIX THE 4 MARKED SNIFF VIOLATIONS AUTOMATICALLY
--------------------------------------------------------------------------------

Time: 108ms; Memory: 4Mb

我们来使用自动格式化编码风格命令

phpcbf D:/phpStudy/WWW/test.php

命令执行完成之后,可以看到如下返回提示,处理了哪一些文件,以及类型

PHPCBF RESULT SUMMARY
----------------------------------------------------------------------
FILE                                                  FIXED  REMAINING
----------------------------------------------------------------------
D:\phpStudy\WWW\test.php                              4      1
----------------------------------------------------------------------
A TOTAL OF 4 ERRORS WERE FIXED IN 1 FILE
----------------------------------------------------------------------

Time: 195ms; Memory: 4Mb

然后我们再次使用检测命令进行检测

FILE: D:\phpStudy\WWW\test.php
--------------------------------------------------------------------------------
FOUND 0 ERRORS AND 1 WARNING AFFECTING 1 LINE
--------------------------------------------------------------------------------
1 | WARNING | A file should declare new symbols (classes, functions,
  |         | constants, etc.) and cause no other side effects, or it should
  |         | execute logic with side effects, but should not do both. The
  |         | first symbol is defined on line 3 and the first side effect is
  |         | on line 8.
--------------------------------------------------------------------------------

Time: 106ms; Memory: 4Mb

能看到最开始检测有四次不合格,但现在只剩下一处了

这里说一下为什么phpcbf没有完全帮处理呢,因为phpcbf只能处理代码风格等方式,而不能帮你处理里面的命名与代码实现规则,所以有少部分还需要人为去更正,但并不会太多

发表评论

发表评论

*

沙发空缺中,还不快抢~