symplify/easy-coding-standard
Use Coding Standard with 0-knowledge of PHP-CS-Fixer and PHP_CodeSniffer
13.2.18
39M downloads/mo
#727 most downloaded on Packagist
ecsphp/ecs
What this package is like to depend on
Last release 3 days ago
20 Aug 2026
Release timing varies
gaps range from 8 days to 4 months
Rarely documented
notes for 7 of 732 stable releases
Nothing withdrawn
no release was ever pulled
9 years old
771 releases · first in 2017
34 releases in the last 12 months
see the full history below
Release timeline
734 releases · Mar 2017 to Aug 2026Releases
latest 60 of 771-
13.2.1820 Aug 2026Nothing published for this version
-
13.2.1722 Jul 2026Nothing published for this version
-
13.2.1622 Jul 2026Nothing published for this version
-
13.2.1522 Jul 2026Release notes
Open source →What's new
🐛 Explicit Symfony attribute allowlist in
StandaloneLineSymfonyAttributeParamFixerReplaces the
str_contains($name, 'Symfony')heuristic with an explicit allowlist of 17 Symfony attribute classes (SYMFONY_ATTRIBUTE_CLASSES). Third-party attributes whose FQCN merely containsSymfony(e.g.App\Symfony\...) are no longer reformatted.-#[\Symfony\Component\Console\Attribute\AsCommand(name: 'app:some', description: 'Some description')] +#[\Symfony\Component\Console\Attribute\AsCommand( + name: 'app:some', + description: 'Some description' +)]
🧹 Drop
pull_requesttrigger fromversion_commandworkflowThe job smoke-tests the published Packagist artifact, so on PRs it installed the already-published package, never the PR code — pure slow noise.
push(main + tags) and weeklyschedulealready cover it. -
13.2.1422 Jul 2026Release notes
Open source →What's new
✨ New
StandaloneLineSymfonyAttributeParamFixer+standaloneLinesetBreaks each argument of a Symfony attribute onto its own line. New opt-in
standaloneLineset groups the standalone-line rules.-#[\Symfony\Component\Console\Attribute\AsCommand(name: 'mautic:entity:import', description: 'Import entity data from a ZIP file.')] +#[\Symfony\Component\Console\Attribute\AsCommand( + name: 'mautic:entity:import', + description: 'Import entity data from a ZIP file.' +)]
$ecsConfig->withPreparedSets(standaloneLine: true); // or $ecsConfig->withSets([SetList::STANDALONE_LINE]);
🐛 Recognize imported short-name Symfony attributes
Now resolves short names against
useimports, not just fully-qualified names.use Symfony\Component\Console\Attribute\AsCommand; -#[AsCommand(name: 'app:some', description: 'Some description')] +#[AsCommand( + name: 'app:some', + description: 'Some description' +)]
-
13.2.1320 Jul 2026Release notes
Open source →What's new
🐛 Drop 3rd-person verb
sin method-name duplicate description-/** - * Contacts a user. * * @return object */ public function contactUser()
🐛 Fix
scoper.phpforFinalInternalClassFixer(#24)Prefixed build no longer mangles the
excludeentity names:-'exclude' => ['final', 'Entity', 'ECSPrefix202607\ORM\Entity', ...] +'exclude' => ['final', 'Entity', 'ORM\Entity', ...]
✅ Regression fixture: readonly promoted properties
Locks
StandaloneLinePromotedPropertyFixersplittingprivate readonlypromoted props. -
13.2.1220 Jul 2026Release notes
Open source →What's new
🐛
StandaloneLinePlainConstructorParamFixerskips ≤3 paramsOnly splits constructors with 4+ params. Short lists stay on one line. Default-value tokens (
[1, 2],new Foo(1)) don't inflate the count. -
13.2.1119 Jul 2026Release notes
Open source →What's new
✨ New
StandaloneLinePlainConstructorParamFixer(spaces set)Covers the gap: constructors with plain params and no promoted properties.
-public function __construct(CorePermissions $security, Translator $translator, RouterInterface $router, FormFactoryInterface $formFactory) +public function __construct( + CorePermissions $security, + Translator $translator, + RouterInterface $router, + FormFactoryInterface $formFactory +)
-
13.2.1019 Jul 2026Release notes
Open source →What's new
✅ Regression fixture: single promoted property among plain params
Locks
StandaloneLinePromotedPropertyFixersplitting all params even when only one is promoted.public function __construct( - CorePermissions $security, Translator $translator, RouterInterface $router, + CorePermissions $security, + Translator $translator, + RouterInterface $router, private LeadModel $leadModel, ) { }
-
13.2.917 Jul 2026Release notes
Open source →What's new
✨ New
StandaloneLineRequiredParamFixer(spaces set)Public methods marked
#[Required]/@requiredare DI points; one param per line keeps diffs to the single changed dependency.#[Required] -public function autowireDependencies(FormModel $formModel, SubmissionModel $submissionModel): void +public function autowireDependencies( + FormModel $formModel, + SubmissionModel $submissionModel +): void
-
13.2.817 Jul 2026Nothing published for this version
-
13.2.711 Jul 2026Nothing published for this version
-
13.2.604 Jul 2026Nothing published for this version
-
13.2.503 Jul 2026Nothing published for this version
-
13.2.402 Jul 2026Nothing published for this version
-
13.2.315 Jun 2026Nothing published for this version
-
13.2.213 Jun 2026Nothing published for this version
-
13.2.111 Jun 2026Nothing published for this version
-
13.2.011 Jun 2026Nothing published for this version
-
13.1.609 Jun 2026Nothing published for this version
-
13.1.530 May 2026Nothing published for this version
-
13.1.430 May 2026Nothing published for this version
-
13.1.304 May 2026Nothing published for this version
-
13.1.203 May 2026Nothing published for this version
-
13.1.103 May 2026Nothing published for this version
-
13.1.003 May 2026Nothing published for this version
-
13.0.405 Jan 2026Nothing published for this version
-
13.0.305 Jan 2026Nothing published for this version
-
13.0.205 Jan 2026Nothing published for this version
-
13.0.105 Jan 2026Nothing published for this version
-
13.0.006 Nov 2025Nothing published for this version
-
12.6.229 Oct 2025Nothing published for this version
-
12.6.127 Oct 2025Nothing published for this version
-
12.6.010 Sep 2025Nothing published for this version
-
12.5.2421 Aug 2025Nothing published for this version
-
12.5.2315 Aug 2025Nothing published for this version
-
12.5.2231 Jul 2025Nothing published for this version
-
12.5.2131 Jul 2025Nothing published for this version
-
12.5.2030 May 2025Nothing published for this version
-
12.5.1930 May 2025Nothing published for this version
-
12.5.1814 May 2025Nothing published for this version
-
12.5.1713 May 2025Nothing published for this version
-
12.5.1628 Apr 2025Nothing published for this version
-
12.5.1527 Apr 2025Nothing published for this version
-
12.5.1427 Apr 2025Nothing published for this version
-
12.5.1327 Apr 2025Nothing published for this version
-
12.5.1223 Apr 2025Nothing published for this version
-
12.5.1125 Mar 2025Nothing published for this version
-
12.5.1025 Mar 2025Nothing published for this version
-
12.5.917 Mar 2025Nothing published for this version
-
12.5.831 Jan 2025Nothing published for this version
-
12.5.731 Jan 2025Nothing published for this version
-
12.5.628 Jan 2025Nothing published for this version
-
12.5.502 Jan 2025Nothing published for this version
-
12.5.412 Dec 2024Nothing published for this version
-
12.5.312 Dec 2024Nothing published for this version
-
12.5.212 Dec 2024Nothing published for this version
-
12.5.112 Dec 2024Nothing published for this version
-
12.5.012 Dec 2024Nothing published for this version
-
12.4.003 Dec 2024Nothing published for this version