通过使用PHP_CodeSniffer,获得最强大的PHP代码格式化
简单来说;简而言之;总之
-
- PHPで書かれたコードのコーディング規約にPSR-12を適用して開発してるよ!
-
- エディタの整形ルールの設定が漏れてて、気づいたら全然触ってないところまで整形されてdiffが読みづれえ…
-
- コード整形のルールをレポジトリ内に入れてPHP_CodeSnifferのコマンドで一発で整形できるようにした!
- IDE(PhpStorm)からもPHP_CodeSnifferを使うようにした
PHP_CodeSniffer是什么?
PHP_CodeSniffer是一种静态分析工具,它可以进行符合编码规范(如PSR-12)的语法检查并自动修复违规情况。
squidslabs/php_codesniffer
当您安装composer和PHP_CodeSniffer之后,您可以使用phpcs和phpcbf命令来检查违规和进行代码格式化。
安装并设置规则
composer require --dev squizlabs/php_codesniffer
完成安装后,将以下 scripts 添加到 composer.json 中,以便轻松执行。
{
"scripts": {
"phpcs": "phpcs --standard=phpcs.xml",
"phpcbf": "phpcbf --standard=phpcs.xml"
}
}
<?xml version="1.0"?>
<ruleset name="example">
<arg value="p"/>
<arg name="colors"/>
<arg value="s"/>
<!-- PSR12 Standard -->
<rule ref="PSR12"/>
<!-- src/ と test/ を検査する -->
<file>src/</file>
<file>test/</file>
</ruleset>
根据项目的组成,将设置放入phpcs.xml。本次使用了PSR12规范,但还有其他可用的编码规范,因此请根据项目选择适合的规范进行设置。
试着整容
因为在这次的composer.json文件的scripts部分定义了两个命令phpcs和phpcbf,所以让我们尝试执行以下命令来检查代码是否有违规行为。
$ composer phpcs
> phpcs --standard=phpcs.xml
..E.................................... 39 / 39 (100%)
FILE: /work/code/src/DI/Container.php
-------------------------------------------------------------------------------------------------------------------
FOUND 3 ERRORS AFFECTING 3 LINES
-------------------------------------------------------------------------------------------------------------------
1 | ERROR | [x] Header blocks must be separated by a single blank line
| | (PSR12.Files.FileHeader.SpacingAfterBlock)
2 | ERROR | [x] Header blocks must be separated by a single blank line
| | (PSR12.Files.FileHeader.SpacingAfterBlock)
3 | ERROR | [x] Header blocks must be separated by a single blank line
| | (PSR12.Files.FileHeader.SpacingAfterBlock)
-------------------------------------------------------------------------------------------------------------------
PHPCBF CAN FIX THE 3 MARKED SNIFF VIOLATIONS AUTOMATICALLY
-------------------------------------------------------------------------------------------------------------------
Time: 235ms; Memory: 8MB
如果有违反行为,它将显示违反发生的位置。
此外,即使出现了违规行为,也可以轻松地通过phpcbf进行修复。
$ composer phpcbf
> phpcbf --standard=phpcs.xml
..F.................................... 39 / 39 (100%)
PHPCBF RESULT SUMMARY
----------------------------------------------------------------------
FILE FIXED REMAINING
----------------------------------------------------------------------
/work/code/src/DI/Container.php 3 0
----------------------------------------------------------------------
A TOTAL OF 3 ERRORS WERE FIXED IN 1 FILE
----------------------------------------------------------------------
Time: 272ms; Memory: 8MB
真方便啊。
将其配置以便可以在PhpStorm中使用。
PhpStorm中已经内置了对PHP_CodeSniffer的支持,所以只需进行几项配置即可使用。
PHP_CodeSniffer是一个用于静态代码分析和自动代码格式化的工具。它可以帮助程序员在编写代码时保持一致的编码风格,并提供准确的代码规范性检查。 PhpStorm是一个集成开发环境,可以与PHP_CodeSniffer无缝集成,使开发人员可以轻松地进行代码审查和纠正,并提高代码质量。
只要按照步骤进行设置,JetBrains官方日文版手册中已经详细列出了所有设置方法,您可以轻松进行设置。
通过进行设置,可以在编辑器上确认错误,并且还可以直接在PhpStorm中修复显示的错误,所以请务必进行设置!