From db70c7719785fda99d9898ed42d0908b7cd43535 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Sat, 20 Jun 2026 17:37:06 +0200 Subject: [PATCH 1/5] [depre] Deprecate Symplify set, as mostly part of common set that have more clearer naming --- config/set/symplify.php | 5 +++++ src/Config/Level/DocblockLevel.php | 13 +++++++++++++ src/Config/Level/SpacesLevel.php | 8 ++++++++ src/Configuration/ECSConfigBuilder.php | 7 ++++++- src/ValueObject/Set/SetList.php | 1 + 5 files changed, 33 insertions(+), 1 deletion(-) diff --git a/config/set/symplify.php b/config/set/symplify.php index 3d7efbfc0a2..f71b1981465 100644 --- a/config/set/symplify.php +++ b/config/set/symplify.php @@ -17,6 +17,11 @@ use Symplify\CodingStandard\Fixer\Strict\BlankLineAfterStrictTypesFixer; use Symplify\EasyCodingStandard\Config\ECSConfig; +trigger_error( + 'The "symplify" set is deprecated. Its rules now live in the "common" sets - use ->withPreparedSets(common: true) or the matching ->withDocblockLevel()/->withSpacesLevel()/->withArrayLevel() methods instead.', + E_USER_DEPRECATED +); + return ECSConfig::configure() ->withRules([ // docblocks and comments diff --git a/src/Config/Level/DocblockLevel.php b/src/Config/Level/DocblockLevel.php index 22cd53894e8..d9731e64d55 100644 --- a/src/Config/Level/DocblockLevel.php +++ b/src/Config/Level/DocblockLevel.php @@ -8,6 +8,7 @@ use PhpCsFixer\Fixer\Comment\NoTrailingWhitespaceInCommentFixer; use PhpCsFixer\Fixer\FixerInterface; use PhpCsFixer\Fixer\Phpdoc\AlignMultilineCommentFixer; +use PhpCsFixer\Fixer\Phpdoc\GeneralPhpdocAnnotationRemoveFixer; use PhpCsFixer\Fixer\Phpdoc\NoBlankLinesAfterPhpdocFixer; use PhpCsFixer\Fixer\Phpdoc\NoEmptyPhpdocFixer; use PhpCsFixer\Fixer\Phpdoc\NoSuperfluousPhpdocTagsFixer; @@ -27,6 +28,9 @@ use PhpCsFixer\Fixer\Phpdoc\PhpdocTrimFixer; use PhpCsFixer\Fixer\Phpdoc\PhpdocTypesFixer; use PhpCsFixer\Fixer\Phpdoc\PhpdocVarWithoutNameFixer; +use Symplify\CodingStandard\Fixer\Annotation\RemoveMethodNameDuplicateDescriptionFixer; +use Symplify\CodingStandard\Fixer\Annotation\RemovePHPStormAnnotationFixer; +use Symplify\CodingStandard\Fixer\Annotation\RemovePropertyVariableNameDescriptionFixer; use Symplify\CodingStandard\Fixer\Commenting\AddMissingParamNameFixer; use Symplify\CodingStandard\Fixer\Commenting\AddMissingVarNameFixer; use Symplify\CodingStandard\Fixer\Commenting\DoubleAsteriskInlineVarFixer; @@ -100,6 +104,12 @@ final class DocblockLevel PhpdocNoEmptyReturnFixer::class, RemoveUselessDefaultCommentFixer::class, NoSuperfluousPhpdocTagsFixer::class, + + // annotation cleanup (from deprecated "symplify" set) + RemovePHPStormAnnotationFixer::class, + RemoveMethodNameDuplicateDescriptionFixer::class, + RemovePropertyVariableNameDescriptionFixer::class, + GeneralPhpdocAnnotationRemoveFixer::class, ]; /** @@ -110,5 +120,8 @@ final class DocblockLevel 'remove_inheritdoc' => true, 'allow_mixed' => true, ], + GeneralPhpdocAnnotationRemoveFixer::class => [ + 'annotations' => ['throws', 'author', 'package', 'group', 'covers', 'category'], + ], ]; } diff --git a/src/Config/Level/SpacesLevel.php b/src/Config/Level/SpacesLevel.php index 04742a82d49..5b014f7bdff 100644 --- a/src/Config/Level/SpacesLevel.php +++ b/src/Config/Level/SpacesLevel.php @@ -29,7 +29,10 @@ use PhpCsFixer\Fixer\Whitespace\NoWhitespaceInBlankLineFixer; use PhpCsFixer\Fixer\Whitespace\TypeDeclarationSpacesFixer; use PhpCsFixer\Fixer\Whitespace\TypesSpacesFixer; +use Symplify\CodingStandard\Fixer\Spacing\MethodChainingNewlineFixer; +use Symplify\CodingStandard\Fixer\Spacing\SpaceAfterCommaHereNowDocFixer; use Symplify\CodingStandard\Fixer\Spacing\StandaloneLinePromotedPropertyFixer; +use Symplify\CodingStandard\Fixer\Strict\BlankLineAfterStrictTypesFixer; /** * Key 0 = level 0 @@ -79,6 +82,11 @@ final class SpacesLevel MethodArgumentSpaceFixer::class, ClassAttributesSeparationFixer::class, NoExtraBlankLinesFixer::class, + + // newline spacing (from deprecated "symplify" set) + BlankLineAfterStrictTypesFixer::class, + SpaceAfterCommaHereNowDocFixer::class, + MethodChainingNewlineFixer::class, ]; /** diff --git a/src/Configuration/ECSConfigBuilder.php b/src/Configuration/ECSConfigBuilder.php index 9fe12796c32..42f99aa2fa2 100644 --- a/src/Configuration/ECSConfigBuilder.php +++ b/src/Configuration/ECSConfigBuilder.php @@ -234,7 +234,10 @@ public function withPreparedSets( bool $psr12 = false, /** @see SetList::COMMON */ bool $common = false, - /** @see SetList::SYMPLIFY */ + /** + * @deprecated rules moved to the "common" sets. Use common: true or the with*Level() methods instead. + * @see SetList::SYMPLIFY + */ bool $symplify = false, /** @see SetList::LARAVEL */ bool $laravel = false, @@ -352,6 +355,8 @@ public function withPreparedSets( } if ($symplify) { + // soft-deprecated: rules moved to the "common" sets, still loaded for backward compatibility + // deprecation warning is emitted on set import, see config/set/symplify.php $this->sets[] = SetList::SYMPLIFY; } diff --git a/src/ValueObject/Set/SetList.php b/src/ValueObject/Set/SetList.php index 5c236d985b2..ff4c76c0dd8 100644 --- a/src/ValueObject/Set/SetList.php +++ b/src/ValueObject/Set/SetList.php @@ -21,6 +21,7 @@ final class SetList /** * @api + * @deprecated rules moved to the "common" sets (array, docblock, spaces). Use SetList::COMMON instead. */ public const string SYMPLIFY = __DIR__ . '/../../../config/set/symplify.php'; From 2eb07f564890f8a8c0ae829918262a3d51cb3c9b Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Sat, 20 Jun 2026 17:58:54 +0200 Subject: [PATCH 2/5] remove packages/coding-standard/config/symplify.php as never used, narrow rules in config/set/sympify.php --- config/set/symplify.php | 24 +--------- packages/coding-standard/config/symplify.php | 48 -------------------- 2 files changed, 1 insertion(+), 71 deletions(-) delete mode 100644 packages/coding-standard/config/symplify.php diff --git a/config/set/symplify.php b/config/set/symplify.php index f71b1981465..5a6e4a2191c 100644 --- a/config/set/symplify.php +++ b/config/set/symplify.php @@ -23,26 +23,4 @@ ); return ECSConfig::configure() - ->withRules([ - // docblocks and comments - RemovePHPStormAnnotationFixer::class, - ParamReturnAndVarTagMalformsFixer::class, - RemoveUselessDefaultCommentFixer::class, - RemoveMethodNameDuplicateDescriptionFixer::class, - RemovePropertyVariableNameDescriptionFixer::class, - - // arrays - ArrayListItemNewlineFixer::class, - ArrayOpenerAndCloserNewlineFixer::class, - StandaloneLinePromotedPropertyFixer::class, - - // newlines - MethodChainingNewlineFixer::class, - SpaceAfterCommaHereNowDocFixer::class, - BlankLineAfterStrictTypesFixer::class, - - LineLengthFixer::class, - ]) - ->withConfiguredRule(GeneralPhpdocAnnotationRemoveFixer::class, [ - 'annotations' => ['throws', 'author', 'package', 'group', 'covers', 'category'], - ]); + ->withRules([]); diff --git a/packages/coding-standard/config/symplify.php b/packages/coding-standard/config/symplify.php deleted file mode 100644 index 13c10f93936..00000000000 --- a/packages/coding-standard/config/symplify.php +++ /dev/null @@ -1,48 +0,0 @@ -rules([ - // docblocks and comments - RemovePHPStormAnnotationFixer::class, - RemoveUselessDefaultCommentFixer::class, - RemoveMethodNameDuplicateDescriptionFixer::class, - RemovePropertyVariableNameDescriptionFixer::class, - - // arrays - ArrayListItemNewlineFixer::class, - ArrayOpenerAndCloserNewlineFixer::class, - StandaloneLineInMultilineArrayFixer::class, - StandaloneLinePromotedPropertyFixer::class, - StandaloneLineConstructorParamFixer::class, - - // newlines - MethodChainingNewlineFixer::class, - SpaceAfterCommaHereNowDocFixer::class, - BlankLineAfterStrictTypesFixer::class, - - // line length - LineLengthFixer::class, - ]); - - $ecsConfig->ruleWithConfiguration(GeneralPhpdocAnnotationRemoveFixer::class, [ - 'annotations' => ['throws', 'author', 'package', 'group', 'covers', 'category'], - ]); -}; From f803bcd7b213e2fe8e11a3756d6c64f3f43c94de Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Sat, 20 Jun 2026 18:00:14 +0200 Subject: [PATCH 3/5] remove deprecated strict and phpunit sets, use Rector instead with propper context --- config/set/symplify.php | 13 -------- src/Configuration/ECSConfigBuilder.php | 23 ------------- .../EditorConfig/EditorConfigFactoryTest.php | 33 ++++++++++++------- 3 files changed, 22 insertions(+), 47 deletions(-) diff --git a/config/set/symplify.php b/config/set/symplify.php index 5a6e4a2191c..5357130a73a 100644 --- a/config/set/symplify.php +++ b/config/set/symplify.php @@ -2,19 +2,6 @@ declare(strict_types=1); -use PhpCsFixer\Fixer\Phpdoc\GeneralPhpdocAnnotationRemoveFixer; -use Symplify\CodingStandard\Fixer\Annotation\RemoveMethodNameDuplicateDescriptionFixer; -use Symplify\CodingStandard\Fixer\Annotation\RemovePHPStormAnnotationFixer; -use Symplify\CodingStandard\Fixer\Annotation\RemovePropertyVariableNameDescriptionFixer; -use Symplify\CodingStandard\Fixer\ArrayNotation\ArrayListItemNewlineFixer; -use Symplify\CodingStandard\Fixer\ArrayNotation\ArrayOpenerAndCloserNewlineFixer; -use Symplify\CodingStandard\Fixer\Commenting\ParamReturnAndVarTagMalformsFixer; -use Symplify\CodingStandard\Fixer\Commenting\RemoveUselessDefaultCommentFixer; -use Symplify\CodingStandard\Fixer\LineLength\LineLengthFixer; -use Symplify\CodingStandard\Fixer\Spacing\MethodChainingNewlineFixer; -use Symplify\CodingStandard\Fixer\Spacing\SpaceAfterCommaHereNowDocFixer; -use Symplify\CodingStandard\Fixer\Spacing\StandaloneLinePromotedPropertyFixer; -use Symplify\CodingStandard\Fixer\Strict\BlankLineAfterStrictTypesFixer; use Symplify\EasyCodingStandard\Config\ECSConfig; trigger_error( diff --git a/src/Configuration/ECSConfigBuilder.php b/src/Configuration/ECSConfigBuilder.php index 42f99aa2fa2..6d70be771df 100644 --- a/src/Configuration/ECSConfigBuilder.php +++ b/src/Configuration/ECSConfigBuilder.php @@ -259,16 +259,6 @@ public function withPreparedSets( bool $casing = false, /** @see SetList::CLEANUP */ bool $cleanup = false, - /** - * @deprecated as never worked, used different rules. Use Rector instead. - * @see SetList::PHPUNIT - */ - bool $phpunit = false, - /** - * @deprecated as dangerous without context. Use Rector instead. - * @see SetList::STRICT - */ - bool $strict = false, /** @see SetList::CLEAN_CODE */ bool $cleanCode = false, ): self { @@ -324,12 +314,6 @@ public function withPreparedSets( $this->sets[] = SetList::CONTROL_STRUCTURES; } - if ($phpunit) { - throw new DeprecatedException( - 'The "phpunit" set is deprecated as it is dangerous to run without proper context. Please use Rector instead.' - ); - } - if ($comments) { $this->sets[] = SetList::COMMENTS; } @@ -343,13 +327,6 @@ public function withPreparedSets( } } - if ($strict) { - // throw exception, as deprecated - throw new DeprecatedException( - 'The "strict" set is deprecated as it is dangerous without context. Remove the "strict: true" from ->withPreparedSets(strict: true, ...) call in "ecs.php" and use Rector instead to make sure you are not breaking your code.' - ); - } - if ($cleanCode) { $this->sets[] = SetList::CLEAN_CODE; } diff --git a/tests/Configuration/EditorConfig/EditorConfigFactoryTest.php b/tests/Configuration/EditorConfig/EditorConfigFactoryTest.php index 149a91fefe6..f5830fddc89 100644 --- a/tests/Configuration/EditorConfig/EditorConfigFactoryTest.php +++ b/tests/Configuration/EditorConfig/EditorConfigFactoryTest.php @@ -47,7 +47,8 @@ public function testParsingInvalidIniFile(): void $this->expectException(Exception::class); $editorConfigFactory = new EditorConfigFactory(); - @$editorConfigFactory->parse(<<parse( + <<assertEquals( new EditorConfigFactory() - ->parse(<<parse( + <<assertEquals( new EditorConfigFactory() - ->parse(<<parse( + <<assertEquals( new EditorConfigFactory() - ->parse(<<parse( + <<assertEquals( new EditorConfigFactory() - ->parse(<<parse( + <<assertEquals( new EditorConfigFactory() - ->parse(<<parse( + <<assertEquals( new EditorConfigFactory() - ->parse(<<parse( + <<assertEquals( new EditorConfigFactory() - ->parse(<<parse( + <<assertEquals( new EditorConfigFactory() - ->parse(<<parse( + <<assertEquals( new EditorConfigFactory() - ->parse(<<parse( + <<assertEquals( new EditorConfigFactory() - ->parse(<<parse( + << Date: Sat, 20 Jun 2026 18:00:41 +0200 Subject: [PATCH 4/5] remove deprecated symplify set from config --- ecs.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ecs.php b/ecs.php index 19148d131e2..eb36b8ac486 100644 --- a/ecs.php +++ b/ecs.php @@ -9,4 +9,4 @@ ->withEditorConfig() ->withRootFiles() ->withSkip(['*/Source/*', '*/Fixture/*']) - ->withPreparedSets(psr12: true, common: true, symplify: true); + ->withPreparedSets(psr12: true, common: true); From 0e126622c85303d5b2460762a53759674459ea8c Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Sat, 20 Jun 2026 18:02:10 +0200 Subject: [PATCH 5/5] cleanup --- src/Config/Level/DocblockLevel.php | 3 +-- src/Configuration/ECSConfigBuilder.php | 22 ++++------------------ src/Exception/DeprecatedException.php | 3 +++ src/ValueObject/Set/SetList.php | 12 ------------ 4 files changed, 8 insertions(+), 32 deletions(-) diff --git a/src/Config/Level/DocblockLevel.php b/src/Config/Level/DocblockLevel.php index d9731e64d55..b97860cbd9d 100644 --- a/src/Config/Level/DocblockLevel.php +++ b/src/Config/Level/DocblockLevel.php @@ -109,7 +109,6 @@ final class DocblockLevel RemovePHPStormAnnotationFixer::class, RemoveMethodNameDuplicateDescriptionFixer::class, RemovePropertyVariableNameDescriptionFixer::class, - GeneralPhpdocAnnotationRemoveFixer::class, ]; /** @@ -121,7 +120,7 @@ final class DocblockLevel 'allow_mixed' => true, ], GeneralPhpdocAnnotationRemoveFixer::class => [ - 'annotations' => ['throws', 'author', 'package', 'group', 'covers', 'category'], + 'annotations' => ['author', 'package', 'group', 'covers', 'category'], ], ]; } diff --git a/src/Configuration/ECSConfigBuilder.php b/src/Configuration/ECSConfigBuilder.php index 6d70be771df..68a3cf1e17c 100644 --- a/src/Configuration/ECSConfigBuilder.php +++ b/src/Configuration/ECSConfigBuilder.php @@ -28,7 +28,6 @@ use Symplify\EasyCodingStandard\Configuration\Levels\LevelRulesResolver; use Symplify\EasyCodingStandard\Exception\Configuration\InitializationException; use Symplify\EasyCodingStandard\Exception\Configuration\SuperfluousConfigurationException; -use Symplify\EasyCodingStandard\Exception\DeprecatedException; use Symplify\EasyCodingStandard\ValueObject\Option; use Symplify\EasyCodingStandard\ValueObject\Set\SetList; @@ -333,8 +332,10 @@ public function withPreparedSets( if ($symplify) { // soft-deprecated: rules moved to the "common" sets, still loaded for backward compatibility - // deprecation warning is emitted on set import, see config/set/symplify.php - $this->sets[] = SetList::SYMPLIFY; + trigger_error( + 'The "symplify" set is deprecated. Its rules now live in the "common" sets - use ->withPreparedSets(common: true) or the matching ->withDocblockLevel()/->withSpacesLevel()/->withArrayLevel() methods instead.', + E_USER_DEPRECATED + ); } if ($laravel) { @@ -654,21 +655,6 @@ public function withPhpCsFixerSets( */ public function withSets(array $sets): self { - // report deprecated STRICT set - foreach ($sets as $set) { - if ($set === SetList::STRICT) { - throw new DeprecatedException( - 'The "strict" set is deprecated as it is dangerous without context. Use Rector instead to make sure you are not breaking your code' - ); - } - - if ($set === SetList::PHPUNIT) { - throw new DeprecatedException( - 'The "phpunit" set is deprecated as it is dangerous to run without proper context. Please use Rector instead.' - ); - } - } - $this->sets = [...$this->sets, ...$sets]; return $this; diff --git a/src/Exception/DeprecatedException.php b/src/Exception/DeprecatedException.php index 330d05b5431..89d3c413f13 100644 --- a/src/Exception/DeprecatedException.php +++ b/src/Exception/DeprecatedException.php @@ -6,6 +6,9 @@ use Exception; +/** + * @api to be used + */ final class DeprecatedException extends Exception { } diff --git a/src/ValueObject/Set/SetList.php b/src/ValueObject/Set/SetList.php index ff4c76c0dd8..0b48b753299 100644 --- a/src/ValueObject/Set/SetList.php +++ b/src/ValueObject/Set/SetList.php @@ -55,23 +55,11 @@ final class SetList */ public const string NAMESPACES = __DIR__ . '/../../../config/set/common/namespaces.php'; - /** - * @api - * @deprecated as dangerous without context. Use Rector instead. - */ - public const string PHPUNIT = __DIR__ . '/../../../config/set/common/phpunit.php'; - /** * @api */ public const string SPACES = __DIR__ . '/../../../config/set/common/spaces.php'; - /** - * @api - * @deprecated as dangerous without context. Use Rector instead. - */ - public const string STRICT = __DIR__ . '/../../../config/set/common/strict.php'; - /** * @api */