adiletmaks/ laravel-code-style
Laravel项目的代码格式化
Requires
- php: >=7.1
- friendsofphp/php-cs-fixer: ^2.14
- illuminate/support: 5.6.x|5.7.x|5.8.x|^6.0
Requires (Dev)
- laravel/framework: 5.6.*
- phpunit/phpunit: ^7.0
README
此包为Laravel应用程序和包提供自动代码风格检查和格式化。您的代码将按照Laravel的代码风格指南进行格式化。
此包添加了php-cs-fixer工具和社区维护的规则集到您的应用程序中。规则集是尽力匹配Laravel框架本身使用的代码风格的最佳尝试。查看一个示例以查看代码风格的外观。
如果您正在编写一个Laravel应用程序、包或教程,并且希望匹配框架的代码风格,您可能希望使用此包。
如果您想知道为什么有这个包,您可以阅读公告帖子。
安装
使用composer要求此包。建议仅针对开发要求此包。
composer require matt-allan/laravel-code-style --dev
服务提供程序将自动使用包发现进行注册。
如果您不使用自动发现,则应将服务提供程序添加到config/app.php
中的提供者数组中。
// existing providers... MattAllan\LaravelCodeStyle\ServiceProvider::class,
一旦安装了包,您应该发布配置。
php artisan vendor:publish --provider="MattAllan\LaravelCodeStyle\ServiceProvider"
发布配置将在项目根目录中添加一个.php_cs
配置文件。您可以根据需要自定义此文件。应将.php_cs
文件提交到版本控制。
第一次运行fixer时,将在项目根目录中的.php_cs.cache
中写入一个缓存文件。您应该忽略此文件,以便它不会被添加到您的版本控制系统。
echo '.php_cs.cache' >> .gitignore
用法
一旦安装了包,您可以使用php-cs-fixer
命令检查和修复代码格式。该命令将在Composer的vendor/bin
目录中可用。
修复
要自动修复您项目中的代码风格,您可以使用php-cs-fixer fix
命令。
vendor/bin/php-cs-fixer fix
这将自动修复您项目中的每个文件的代码风格。
默认情况下,仅显示每个修复文件的文件名。要查看每个更改的完整diff,请附加--diff
标志。
vendor/bin/php-cs-fixer fix --diff
检查
如果您想在不实际更改任何文件的情况下检查格式,您应使用带有--dry-run
标志的fix
命令。
vendor/bin/php-cs-fixer fix --dry-run --diff
在dry-run模式下,任何违规行为都会导致命令返回非零退出代码。您可以使用此命令来使CI构建或git提交钩子失败。
Composer脚本
为了使您的项目的贡献者更容易检查和修复代码风格,建议将命令添加为composer脚本。
以下示例允许任何人通过调用composer check-style
来检查代码风格,并通过调用composer fix-style
来修复代码风格。
{ // ... "scripts": { "check-style": "php-cs-fixer fix --dry-run --diff", "fix-style": "php-cs-fixer fix" } }
更多选项
有关选项的完整列表,请参阅php-cs-fixer文档。
配置
默认配置已作为 .php_cs
文件发布在项目根目录下。您可以通过自定义此文件来更改选项,例如搜索路径或应用的修正。
路径
您可以通过在 MattAllan\LaravelCodeStyle\Config::setFinder
方法传入的 PhpCsFixer\Finder
实例上链式调用方法来更改搜索 PHP 文件的路径。
例如,要搜索 examples
目录,您会附加 ->in('examples')
<?php require __DIR__ . '/vendor/autoload.php'; return (new MattAllan\LaravelCodeStyle\Config()) ->setFinder( PhpCsFixer\Finder::create() ->in(app_path()) // ... ->in('examples') ) // ...
默认路径是为 Laravel 应用程序设置的。如果您正在编写一个包,路径辅助函数将不可用,并且您需要根据需要更改路径,即 PhpCsFixer\Finder::create()->in(__DIR__)
。
有关选项的完整列表,请参阅 Symfony Finder 文档。
规则
默认情况下,仅启用了 @Laravel
预设。此预设强制执行 PSR-2 标准 以及近 100 其他规则,例如按长度排序 use 语句和强制在多行数组中添加尾随逗号。
还有一个 @Laravel:risky
预设可用。@Laravel:risky
预设启用了可能更改代码行为的规则。要启用风险规则,您需要添加预设并将 isRiskyEnabled
设置为 true。
return (new MattAllan\LaravelCodeStyle\Config()) ->setFinder( // ... ) ->setRules([ '@Laravel' => true, '@Laravel:risky' => true, ]) ->setRiskyAllowed(true);
可以覆盖预设中的特定规则。例如,您可以像这样禁用 no_unused_imports
规则
return (new MattAllan\LaravelCodeStyle\Config()) ->setFinder( // ... ) ->setRules([ '@Laravel' => true, 'no_unused_imports' => false, ]);
有关可用规则的完整列表,请参阅 php-cs-fixer 文档。
持续集成
要自动在某人打开拉取请求或推送提交时修复代码样式,请查看 StyleCI。StyleCI 编写了此包依赖的许多开源修复规则,并且 StyleCI 的 Laravel 预设是 Laravel 代码风格的官方定义。
编辑器支持
任何 php-cs-fixer 编辑器插件都将工作。有关更多信息,请查看 php-cs-fixer 读取文件。
它是如何工作的
Laravel 没有发布官方的 php-cs-fixer 规则集。要创建规则集,我们比较 StyleCI 的预设与可用的 php-cs-fixer 规则。在某些情况下,StyleCI 正在使用已不再可用的规则。对于这些规则,我们必须挖掘 php-cs-fixer 的 git 历史来确定哪个规则替换了已弃用的规则。
无法向 php-cs-fixer 添加自己的预设。相反,通过扩展 PhpCsFixer\Config
来搜索自定义预设的规则,并在找到规则时合并它们。
为了确保规则保持同步,自动测试格式化整个 Laravel 框架并比较结果。如果现有 Laravel 文件与我们的规则集不匹配,则构建失败。
变更日志
有关最近更改的更多信息,请参阅 CHANGELOG。
测试
$ composer test
贡献
有关详细信息,请参阅 CONTRIBUTING。
鸣谢
许可证
MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件。