adiletmaks/laravel-code-style

Laravel项目的代码格式化

0.4.1 2019-11-13 13:26 UTC

This package is auto-updated.

Last update: 2024-09-14 00:49:21 UTC


README

Packagist License Latest Stable Version Build Status

此包为Laravel应用程序和包提供自动代码风格检查和格式化。您的代码将按照Laravel的代码风格指南进行格式化。

此包添加了php-cs-fixer工具和社区维护的规则集到您的应用程序中。规则集是尽力匹配Laravel框架本身使用的代码风格的最佳尝试。查看一个示例以查看代码风格的外观。

如果您正在编写一个Laravel应用程序、包或教程,并且希望匹配框架的代码风格,您可能希望使用此包。

如果您想知道为什么有这个包,您可以阅读公告帖子

example code formatting

安装

使用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)。有关更多信息,请参阅 许可证文件