Skip to content

Update dependency symplify/easy-coding-standard to v13 - #4

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/symplify-easy-coding-standard-13.x
Open

Update dependency symplify/easy-coding-standard to v13#4
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/symplify-easy-coding-standard-13.x

Conversation

@renovate

@renovate renovate Bot commented Nov 6, 2025

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
symplify/easy-coding-standard ^12.3^13.0 age confidence

Release Notes

ecsphp/ecs (symplify/easy-coding-standard)

v13.2.17

Compare Source

v13.2.16

Compare Source

v13.2.15: Released ECS 13.2.15

Compare Source

What's new

🐛 Explicit Symfony attribute allowlist in StandaloneLineSymfonyAttributeParamFixer

Replaces the str_contains($name, 'Symfony') heuristic with an explicit allowlist of 17 Symfony attribute classes (SYMFONY_ATTRIBUTE_CLASSES). Third-party attributes whose FQCN merely contains Symfony (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_request trigger from version_command workflow

The 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 weekly schedule already cover it.

v13.2.14: Released ECS 13.2.14

Compare Source

What's new

✨ New StandaloneLineSymfonyAttributeParamFixer + standaloneLine set

Breaks each argument of a Symfony attribute onto its own line. New opt-in standaloneLine set 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 use imports, 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'
+)]

v13.2.13: Released ECS 13.2.13

Compare Source

What's new

🐛 Drop 3rd-person verb s in method-name duplicate description
-/**
- * Contacts a user.
  *
  * @return object
  */
 public function contactUser()
🐛 Fix scoper.php for FinalInternalClassFixer (#​24)

Prefixed build no longer mangles the exclude entity names:

-'exclude' => ['final', 'Entity', 'ECSPrefix202607\ORM\Entity', ...]
+'exclude' => ['final', 'Entity', 'ORM\Entity', ...]
✅ Regression fixture: readonly promoted properties

Locks StandaloneLinePromotedPropertyFixer splitting private readonly promoted props.

v13.2.12: Released ECS 13.2.12

Compare Source

What's new

🐛 StandaloneLinePlainConstructorParamFixer skips ≤3 params

Only splits constructors with 4+ params. Short lists stay on one line. Default-value tokens ([1, 2], new Foo(1)) don't inflate the count.

v13.2.11: Released ECS 13.2.11

Compare 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
+)

v13.2.10: Released ECS 13.2.10

Compare Source

What's new

✅ Regression fixture: single promoted property among plain params

Locks StandaloneLinePromotedPropertyFixer splitting 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,
 ) {
 }

v13.2.9: Released ECS 13.2.9

Compare Source

What's new

✨ New StandaloneLineRequiredParamFixer (spaces set)

Public methods marked #[Required] / @required are 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

v13.2.8: Released ECS 13.2.8

Compare Source

What's new

🐛 Fix autoloading of nested paths
🐛 Match method-name docblock descriptions containing articles
-/**
- * Get the API helper.
- *
+/**
  * @return object
  */
 public function getApiHelper()

Drops a/an/the (word-boundary) before comparing description to method name.

📖 Document passing paths as CLI arguments in README
vendor/bin/ecs src tests

v13.2.7

Compare Source

v13.2.6: Released ECS 13.2.6

Compare Source

What's new

✨ New TypeToVarTagFixer

Flips @type doc tag into @var, upgrading single-asterisk inline comments to real doc blocks.

-/* @type \Mautic\ReportBundle\Model\ReportModel $model */
+/** @var \Mautic\ReportBundle\Model\ReportModel $model */
 $model = ...;
✨ New MergeDocBlockStartFixer

Fixes docblocks opened with /* instead of /** and strips empty *-only lines.

-/*
- *
- * @return $this
- */
+/**
+ * @return $this
+ */
✨ New RemoveEventSubscriberDescriptionFixer

Removes redundant subscriber-method docblocks that just repeat the method name + "event".

-/**
- * Delete lead event
- */
 public function onLeadDelete(LeadEvent $event): bool
🐛 Remove getter/setter verb-mismatch docblock description

RemoveMethodNameDuplicateDescriptionFixer now drops * Get results. above setResults() (get/set mix-up carries no info).

✅ Cover RemoveDeadParamFixer for anonymous functions
-/**
- * @param $mappedFields
- * @param $fieldType
- */
 $cleanup = function (array &$mappedFields, string $fieldType) {
 };
🐛 Fix PHPStan env-dependent token constant error

Scope PHPStan ignores for T_OPEN_CURLY_BRACKET (PHP_CodeSniffer constant) across environments.

v13.2.5: Released ECS 13.2.5

Compare Source

What's new

🐛 Fix preload

Preload path fix after the console / dependency migration.

v13.2.4: Released ECS 13.2.4

Compare Source

What's new

🚀 42 new rules across common sets + Levels

Two new sets (casing, cleanup) and 40 more mature, non-PSR-12 rules wired into the gradual-adoption Levels.

-STRLEN($name);                  // NativeFunctionCasing
+strlen($name);
-$a = [ ];                       // NoWhitespaceInEmptyArray
+$a = [];
-/** @return integer */          // PhpdocScalar
+/** @return int */
-$x = isset($a) ? $a : $b;       // TernaryToNullCoalescing
+$x = $a ?? $b;

New @api consts SetList::CASING, SetList::CLEANUP; withPreparedSets(casing:, cleanup:).

⚠️ Deprecate symplify set, remove phpunit + strict sets

symplify soft-deprecated (rules now in common under clearer names). phpunit and strict removed — dangerous without context, use Rector instead.

 return ECSConfig::configure()
     ->withPreparedSets(
         common: true,
-        symplify: true,
-        phpunit: true,
-        strict: true,
     );
✨ New FixTagTypoFixer

Fixes plural doc-block tag typos (@returns@return, @params@param, @vars@var), incl. psalm-/phpstan- prefixes.

🐛 Fix AddMissingVarNameFixer for intersection types
-/** @var MockObject&AbstractIntegration */
+/** @var MockObject&AbstractIntegration $integration */
 $integration = $this->getMockBuilder(AbstractIntegration::class);
🐛 Fix SwitchedTypeAndNameFixer for generics with commas
-@param $submittedArray array<int, string>
+@param array<int, string> $submittedArray
🐛 Skip @param comment text mistaken as switched type

@param $extra Can be used by ... no longer reordered — trailing words are a description, not a type.

🐛 Remove method-name duplicate description with trailing punctuation

RemoveMethodNameDuplicateDescriptionFixer now strips * Set name. (trailing ./!) above setName().

🧹 Internals
  • Drop symfony/console, migrate console layer to entropy/entropy (#​27)
  • Inline symplify/easy-parallel for fewer deps (#​28)
  • Resolve PHPStan errors (#​29)

v13.2.3: Released ECS 13.2.3

Compare Source

What's new

⚠️ Deprecate old symfony-legacy closure configuration

The legacy closure-based Symfony config is deprecated. Use the fluent API instead:

return ECSConfig::configure()
    ->withPreparedSets(common: true);

v13.2.2: Released ECS 13.2.2

Compare Source

What's new

✨ New RemoveDeadVarThisFixer

Removes pointless @var $this docblocks above $this calls — they add noise and never help type inference. Added to the docblock level.

 function someFunction()
 {
-    /** @var SomeType $this */
     $this->run();
 }
🐛 Fix AddMissingVarNameFixer for array item types

The fixer now correctly appends the variable name when the @var type is an array shape like int[]:

 function arrayItems()
 {
-    /** @var int[] */
+    /** @var int[] $values */
     $values = [1000];
 }

v13.2.1

Compare Source

v13.2.0: Released ECS 13.2

Compare Source

The headline of this release: ECS is now a single package. The symplify/coding-standard fixers moved in-tree, and the Laravel container dependency is gone. No breaking changes for users — the Symplify\CodingStandard\Fixer\* class names are unchanged.


⬆️ How to upgrade

If you previously required symplify/coding-standard directly, drop it — it now ships inside ECS:

composer remove symplify/coding-standard --dev
composer require symplify/easy-coding-standard:^13.2 --dev

Your ecs.php needs no changes: the Symplify\CodingStandard\Fixer\* class names are unchanged. If you only ever required symplify/easy-coding-standard, a plain composer update symplify/easy-coding-standard is all you need.


🎯 Highlights


1. symplify/coding-standard merged into ECS (#​19)

The 26 custom Symplify fixers ECS has always relied on now live directly in this repository under packages/coding-standard/. ECS could never run without them, and many prepared sets are tightly coupled to them — so maintaining two repos added friction for no benefit.

What this means for you:

  • One package instead of two. composer require symplify/easy-coding-standard --dev no longer pulls in a separate symplify/coding-standard.

  • Class names are unchanged — your existing ecs.php keeps working as-is:

    // ecs.php — still valid, no change needed
    use Symplify\EasyCodingStandard\Config\ECSConfig;
    use Symplify\CodingStandard\Fixer\LineLength\LineLengthFixer;
    
    return ECSConfig::configure()
        ->withRules([LineLengthFixer::class]);
        ->withPreparedSets(symplify: true);

2. withDocblockLevel() now goes much deeper (#​19)

Because the Symplify commenting fixers now ship in-tree, the gradual docblock level gained 11 new rules (24 total). You opt in one level per PR, safest first:

// ecs.php
use Symplify\EasyCodingStandard\Config\ECSConfig;

return ECSConfig::configure()
    ->withDocblockLevel(5); // ramp up one level at a time

New rules now reachable through the level include inline @var normalization (DoubleAsteriskInlineVarFixer, SingleLineInlineVarDocBlockFixer, AddMissingVarNameFixer), @param fixes (AddMissingParamNameFixer, FixParamNameTypoFixer, RemoveParamNameReferenceFixer, RemoveDeadParamFixer), and superfluous-name removal (RemoveSuperfluousReturnNameFixer, RemoveSuperfluousVarNameFixer).


3. illuminate/container replaced with entropy/entropy (#​17)

ECS's DI container no longer extends Illuminate's. ECSConfig now extends Entropy\Container\Container.

What this means for you:

  • One less dependency in your install tree — illuminate/container and its bundled patch (patches/illuminate-container-container-php.patch) are gone.
  • Checker registration order and the documented duplicate-in-set behavior are preserved.
  • symfony/console stays — it's still a transitive dependency of PHP-CS-Fixer and easy-parallel, so it can't be dropped.

This is an internal change. If you only use the public ECSConfig::configure()->with...() API, nothing changes for you.


v13.1.6

Compare Source

v13.1.5

Compare Source

v13.1.4

Compare Source

v13.1.3

Compare Source

v13.1.2

Compare Source

v13.1.1

Compare Source

v13.1.0

Compare Source

v13.0.4

Compare Source

v13.0.3

Compare Source

v13.0.2

Compare Source

v13.0.1

Compare Source

v13.0.0: Released easy-coding-standard 13.0.0

Compare Source

What's Changed

New Contributors

Full Changelog: ecsphp/ecs@12.6.2...13.0.0


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants