PHP 代码风格检测/修复工具:Laravel Pint

PHP 代码风格检测/修复工具:Laravel Pint

简介

  • Github 地址:https://github.com/laravel/pint
  • Laravel Pint 是 Laravel 官方出品,是一个专为极简主义者设计的 PHP 代码风格修复器。
  • 配置兼容 php-cs-fixer
  • 支持 Laravel 与非 Laravel 项目

安装

  • 安装 pint
1
composer require laravel/pint --dev
  • 配置 composer.json script
1
2
3
4
5
6
7
8
9
{
"scripts": {
"pint-test": [
"./vendor/bin/pint --test -v"
],
"pint-fix": [
"./vendor/bin/pint -v"
]
}
  • 运行
1
2
3
4
5
6
7
# 原始命令
./vendor/bin/pint --test -v # 运行语法检测(不修复) -v:查看明细
./vendor/bin/pint -v # 运行语法修复

# composer 方式
composer pint-test
composer pint-fix

附录

性能比对

Pint 执行速度比 php-cs-fixer 更快,如图示:

在无文件需要进行格式化的耗时,php-cs-fixer 是 pint 的约3倍耗时

配置相关

pint 配置兼容 php-cs-fixer,如下文 pint 的配置基本为 .php-cs-fixer.php JSON 版。

  • .php-cs-fixer.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php

declare(strict_types=1);

return (new PhpCsFixer\Config())
->setRiskyAllowed(true)
->setRules([
'@Symfony' => true,
'array_syntax' => ['syntax' => 'short'],
'ordered_imports' => true,
'no_useless_else' => true,
'no_useless_return' => true,
'php_unit_construct' => true,
'php_unit_strict' => true,
'yoda_style' => false,
'phpdoc_summary' => false,
'phpdoc_no_empty_return' => false,
'not_operator_with_successor_space' => true,
'no_superfluous_phpdoc_tags' => false,
'binary_operator_spaces' => ['default' => 'align_single_space'], // 等号对齐、数字箭头符号对齐
'single_trait_insert_per_statement' => false,
'blank_line_before_statement' => ['statements' => ['declare']],
])
->setFinder(
PhpCsFixer\Finder::create()
->exclude('_*')
->exclude('bin')
->exclude('bootstrap')
->exclude('public')
->exclude('vendor')
->exclude('storage')
->exclude('resources')
->exclude('public')
->in(__DIR__)
)->setUsingCache(false);
  • pint.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
{
"preset": "laravel",
"rules": {
"array_syntax": {
"syntax": "short"
},
"ordered_imports": true,
"no_useless_else" : true,
"no_useless_return": true,
"php_unit_construct": true,
"php_unit_strict": true,
"yoda_style": false,
"phpdoc_summary": false,
"phpdoc_no_empty_return": false,
"not_operator_with_successor_space": true,
"no_superfluous_phpdoc_tags": false,
"binary_operator_spaces": {
"default": "align_single_space"
},
"single_trait_insert_per_statement": false,
"blank_line_before_statement": {
"statements": ["declare"]
}
},
"exclude": [
"storage",
"resources",
"public"
]
}

评论