symplify/easy-coding-standard

无需了解 PHP-CS-Fixer 和 PHP_CodeSniffer,即可使用编码规范。

12.3.5 2024-08-08 08:43 UTC

This package is auto-updated.

Last update: 2024-09-20 13:43:40 UTC


README

Downloads total


杀手级功能


安装

composer require symplify/easy-coding-standard --dev

用法

vendor/bin/ecs

在第一次运行时,ECS 创建 ecs.php 配置文件,包含目录和第一条规则以启动。

然后您可以再次运行以查看建议的差异

vendor/bin/ecs

要实际 修复您的代码,请添加 --fix

vendor/bin/ecs --fix

这就完了!


配置

大多数情况下,您会对默认配置感到满意。最相关部分是配置路径、检查器和集合

use PhpCsFixer\Fixer\ArrayNotation\ArraySyntaxFixer;
use PhpCsFixer\Fixer\ListNotation\ListSyntaxFixer;
use Symplify\EasyCodingStandard\Config\ECSConfig;

return ECSConfig::configure()
    ->withPaths([__DIR__ . '/src', __DIR__ . '/tests'])
    ->withConfiguredRule(
        ArraySyntaxFixer::class,
        ['syntax' => 'long']
    )
    ->withRules([
        ListSyntaxFixer::class,
    ])
    ->withPreparedSets(psr12: true);

您想检查根目录下的所有 *.php 文件(例如 ecs.phprector.php 等)吗?而不是逐个列出,请使用 ->withRootFiles() 方法

use Symplify\EasyCodingStandard\Config\ECSConfig;

return ECSConfig::configure()
    ->withPaths([__DIR__ . '/src', __DIR__ . '/tests'])
    ->withRootFiles();

您想包含来自 php-cs-fixer 的 44 个集合之一吗?

您可以

use Symplify\EasyCodingStandard\Config\ECSConfig;

return ECSConfig::configure()
    ->withPaths([__DIR__ . '/src', __DIR__ . '/tests'])
    ->withPhpCsFixerSets(perCS20: true, doctrineAnnotation: true);

如何跳过文件/规则?

喜欢规则集合,但想跳过单个规则或某些文件?

use Symplify\EasyCodingStandard\Config\ECSConfig;

return ECSConfig::configure()
    ->withSkip([
        // skip single rule
        ArraySyntaxFixer::class,

        // skip single rule in specific paths
        ArraySyntaxFixer::class => [
            __DIR__ . '/src/ValueObject/',
        ],

        // skip directory by absolute or * mask
        __DIR__ . '/src/Migrations',

        // skip directories by mask
        __DIR__ . '/src/*/Legacy',
    ]);

不常用的选项

您可能不会使用这些,但它们可以为您提供更多对内部过程的控制

use Symplify\EasyCodingStandard\Config\ECSConfig;
use Symplify\EasyCodingStandard\ValueObject\Option;

return ECSConfig::configure()
    // file extensions to scan
    ->withFileExtensions(['php'])

    // configure cache paths and namespace - useful e.g. Gitlab CI caching, where getcwd() produces always different path
    ->withCache(
        directory: sys_get_temp_dir() . '/_changed_files_detector_tests',
        namespace: getcwd() // normalized to directory separator
    )

    // print contents with specific indent rules
    ->withSpacing(indentation: Option::INDENTATION_SPACES, lineEnding: PHP_EOL)

    // modify parallel run
    ->withParallel(timeoutSeconds: 120, maxNumberOfProcess: 32, jobSize: 20);

提到的值是默认值。


您是否在多个项目中使用 ECS?您是否希望在每个项目中始终以相同的方式运行它们?让我们利用 Composer 脚本

此命令向您的 composer.json 添加 2 个方便的脚本

vendor/bin/ecs scripts

始终以相同的方式运行它们 - 检查代码

composer check-cs

要应用修复,请运行

composer fix-cs

控制输出格式

您可能希望使用 ECS 为第三方工具生成报告。

我们目前提供以下格式化程序

  • console:类似于 PHP CS Fixer 的人类导向打印。
  • json:用于任意工具的自定义 JSON 块。
  • junit:用于不同 CI 环境的 JUnit 格式。
  • checkstyle:用于 Github Action 报告。
  • gitlab:用于 Gitlab 代码质量报告或 Code Climate 工具。

有关每个格式化程序的详细信息,请参阅其各自的 实现


常见问题解答

如何清除缓存?

vendor/bin/ecs --clear-cache

如何查看所有使用的规则?

vendor/bin/ecs list-checkers

您是否需要 json 格式?

vendor/bin/ecs list-checkers --output-format json

如何从其他编码规范工具迁移?

您使用另一个工具并想迁移?这很简单 - 这里是 "如何"。