symplify/easy-coding-standard 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

symplify/easy-coding-standard

最新稳定版本:13.0.0

Composer 安装命令:

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

包简介

Use Coding Standard with 0-knowledge of PHP-CS-Fixer and PHP_CodeSniffer.

README 文档

README

Downloads total


Killer Features


Install

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

Usage

vendor/bin/ecs

On the first run, ECS creates ecs.php config file with directories and first rule to kick off.

Then you can run again to see the suggested diffs:

vendor/bin/ecs

To actually fix your code, add --fix:

vendor/bin/ecs --fix

That's it!


Configure

Most of the time, you'll be happy with the default configuration. The most relevant part is configuring paths, checkers and sets:

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);

Do you want to check all *.php files in your root (ecs.php, rector.php etc.)? Instead of listing them one by one, use ->withRootFiles() method:

use Symplify\EasyCodingStandard\Config\ECSConfig;

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

Do you want to include one of sets from php-cs-fixer?

You can:

use Symplify\EasyCodingStandard\Config\ECSConfig;

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

How to Skip Files/Rules?

Love the sets of rules, but want to skip single rule or some files?

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',
    ]);

Less Common Options

You probably won't use these, but they can give you more control over the internal process:

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);

Mentioned values are default ones.


Do you use ECS across variety of project? Do you want to run them always the same way in each of those project? Let's make use of Composer scripts

This command adds 2 handy scripts to your composer.json:

vendor/bin/ecs scripts

Run them always the same way - to check the code:

composer check-cs

To apply fixes, run:

composer fix-cs

Controlling Output Format

You may want to use ECS to generate reports for third-party tooling.

We currently provide formatters for:

  • console: Human-oriented printing à la PHP CS Fixer.
  • json: A custom JSON blob for arbitrary tooling.
  • junit: JUnit format to be used in different CI environments.
  • checkstyle: Useful for Github Action Reports.
  • gitlab: For Gitlab code quality reports or Code Climate tooling.

You can use the output format option as below

vendor/bin/ecs --output-format=checkstyle

For information on how each of these behave, refer to their respective implementations.


FAQ

How do I clear cache?

vendor/bin/ecs --clear-cache

How can I see all used rules?

vendor/bin/ecs list-checkers

Do you look for json format?

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

Can I Use My .editorconfig?

Mostly! By using withEditorConfig(), ECS will automatically discover the .editorconfig file in the project's root directory. It will use any rules under [*] or [*.php] (the latter taking priority) and respect the settings for:

  • indent_style
  • end_of_line
  • max_line_length
  • trim_trailing_whitespace
  • insert_final_newline
  • quote_type
    • Only single and auto are respected.
    • Warning: this is a proposed field, but not fully standard.

These settings will take precedence over similar rules configured through sets like PSR12, to avoid conflicting with other tooling using your .editorconfig.

Unfortunately, not all settings are currently respected, but PRs are always welcome!

How to Migrate from another coding standard tool?

Do you use another tool and want to migrate? It's pretty straightforward - here is "how to":

统计信息

  • 总下载量: 32.23M
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1604
  • 点击次数: 2
  • 依赖项目数: 1553
  • 推荐数: 8

GitHub 信息

  • Stars: 1590
  • Watchers: 21
  • Forks: 93
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-01-04