Skip to content

Conversation

@renovate-bot-cbcoutinho
Copy link
Contributor

@renovate-bot-cbcoutinho renovate-bot-cbcoutinho bot commented Dec 20, 2025

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
rector/rector (source) ^1.2^2.0 age adoption passing confidence

Warning

Some dependencies could not be looked up. Check the Dependency Dashboard for more information.


Release Notes

rectorphp/rector (rector/rector)

v2.3.4: Released Rector 2.3.4

Compare Source

Bugfixes 🐛

  • Bump to PHPStan ^2.1.36 (#​7850)
  • [Php81] Exclude Doctrine ODM MongoDB 2.16 Document and EmbeddedDocument from ReadOnlyPropertyRector. (#​7848), Thanks @​mickverm!

v2.3.3: Released Rector 2.3.3

Compare Source

Bugfixes 🐛

v2.3.2: Released Rector 2.3.2

Compare Source

New Features 🥳

  • [dx] Rename DeprecatedAnnotationToDeprecatedAttributeRector for PHP 8.5 to explicit ConstAndTraitDeprecatedAttributeRector, add trait suport (#​7823)

Bugfixes 🐛

  • Bump to PHPStan 2.1.34 and fix compatible code (rectorphp/rector-src#7844)
  • [perf] optimize ParamTypeByMethodCallTypeRector for speed with early checks (#​7831)
  • make resolveClassReflection non-nullable as always passed a node (#​7833)
  • [Php74] Skip closure in attribute on ClosureToArrowFunctionRector (#​7834)
  • Manage named arguments when removing values (#​7835), Thanks @​carlos-granados!
  • bump to PHP 8.3 + update deps + allow it in CI (#​7838)
  • Support array_values in ArrayFirstLastRector (#​7830), Thanks @​Orest-Divintari!
  • [Php85] Skip as assigned var/op on ArrayFirstLastRector (#​7843)
  • Remove no longer needed tweak AlwaysRememberedExpr on Printer per PHPStan 2.1.34 (#​7770)

rectorphp/rector-phpunit 🟢

v2.3.1: Released Rector 2.3.1

Compare Source

New Features and Changes 🥳

  • [tdd] Add AddReturnDocblockForDimFetchArrayFromAssignsRector (#​7792)
  • [tdd] Add AddReturnDocblockFromMethodCallDocblockRector (#​7796)
  • [tdd] Add AddVarArrayDocblockFromDimFetchAssignRector (#​7801)
  • [DeadCode] Add RemoveDeadIfBlocksRector (#​7528), Thanks @​john-shaffer!
  • [dead-code] Add RemoveVoidDocblockFromMagicMethodRector (#​7822) - Thanks @​parijke!
  • [experiment] Remove leaveNode() method on AbstractRector and CallableNodeVisitor (#​7767)

Bugfixes 🐛

  • Skip Doctrine Connection calls in AddReturnDocblockFromMethodCallDocblockRector (#​7797)
  • add static all support to AddReturnDocblockFromMethodCallDocblockRector (#​7798)
  • add object support to DocblockReturnArrayFromDirectArrayInstanceRector (#​7795)
  • [TypeDeclarationDocblocks] Use FQCN return docblock for array of object types on AddReturnDocblockFromMethodCallDocblockRector (#​7800), Thanks @​guanguans!
  • [php 8.3] cover private abstract constants in AddTypeToConstRector (#​7804)
  • Add check for append in foreach items assignment (#​7815), Thanks @​solverat!
  • Static closure rule ignores arguments with $this binding (#​7721), Thanks @​peterfox!
  • fix: skip non-native methods (#​7747), Thanks @​calebdw!
  • [Php74] Fix indentation space on ClosureToArrowFunctionRector with comment inner closure (#​7779)
  • [DeadCode] Handle crash when parent does not has default param and child has (#​7782)
  • fix mixed[] override with empty array in DocblockReturnArrayFromDirectArrayInstanceRector (#​7793)
  • [ChangesReporting] Fix total changed result on JsonOutputFormatter (#​7807)
  • Manage named arguments when replacing a value (#​7784), Thanks @​carlos-granados!
  • [DeadCode] Register RemoveNextSameValueConditionRector in dead-code set (#​7790)
  • [DeadCode] Skip final and non-public __construct() on RemoveParentDelegatingConstructorRector (#​7806)
  • [DeadCode][Php80] Handle crash on mix ClassPropertyAssignToConstructorPromotionRector+RemoveParentDelegatingConstructorRector (#​7799)
  • [DeadCode] Skip with elseif/else on RemoveNextSameValueConditionRector (#​7809)
  • [DeadCode] Merge comment on RemoveNextSameValueConditionRector (#​7810)
  • skip marker attribute in RemoveEmptyClassMethodRector (#​7813)
  • [DeadCode] Skip private promoted property on RemoveParentDelegatingConstructorRector (#​7817)
  • Remove rector from rule definition title (#​7820), Thanks @​simonschaufi!
  • [experiment-next] Remove leaveNode() calls on AbstractImmutableNodeTraverser (#​7778)
  • [DeadCode] Handle multi vars on RemoveNonExistingVarAnnotationRector (#​7780)
  • [Php71] Try to handle no variants on RemoveExtraParametersRector (#​7803)

v2.3.0: Released Rector 2.3

Compare Source

New Features 🥳


Bugfixes 🐛

  • Manage named arguments in ArgumentAdderRector rule (#​7777), Thanks @​carlos-granados!
  • [compat] Add SymplifyQuoteEscapeRector deprecated rule for BC layer (#​7744)
  • [Php81] Skip on Param default on ArrayToFirstClassCallableRector (#​7749)
  • [CodeQuality] Handle ternary in identical left/right on UseIdenticalOverEqualWithSameTypeRector (#​7748)
  • fix: chained calls on static calls (#​7746), Thanks @​calebdw!
  • [code-quality] Extract standalone SortAttributeNamedArgsRector from SortNamedParamRector, to slightly different areas (#​7750)
  • [rename] Rename SortNamedParamRector to SortCallLikeNamedArgsRector to be more clear about the intent (#​7751)
  • [Php85] Skip under unset() on ArrayFirstLastRector (#​7752)
  • [Php81] ArrayToFirstClassCallableRector should not skip non-public methods from owning scope (#​7760), Thanks @​acoulton!
  • [fix] wrap ternary in parenthese on string casting, if only cond is casted (#​7745)
  • [internal] Fix inline replace block removal not removed on deep block for InlineIfToExplicitIfRector + ReplaceBlockToItsStmtsRector (#​7764)
  • [TypeDeclaration] Skip class not found on ObjectTypedPropertyFromJMSSerializerAttributeTypeRector (#​7774)
  • [Php85] Skip defined int or string on ArrayKeyExistsNullToEmptyStringRector (#​7758)

Removed 💀

  • [DeadCode] Skip trait on RemoveAlwaysTrueIfConditionRector (#​7759)
  • [internal] Remove duplicated enterNode() type check already handled in node traverser (#​7717)
  • [dx] warn about deprecated beforeTraverse() method once FileNode is ready (#​7768)
  • [DeadCode] Skip next assign expr has side effect inside try {} on RemoveDoubleAssignRector (#​7775)
  • [DeadCode] Skip with different default param value child vs parent on RemoveParentDelegatingConstructorRector (#​7776)

rectorphp/rector-symfony 🎵

  • bump (#​911)
  • [code-quality] Add ReturnDirectJsonResponseRector (#​910)
  • Fix scoped downgrade SymfonyClass (#​909)
  • cover is safe (#​908)
  • [twig] add explicit attribute name arg, to improve context (#​907)
  • [Symfony73] Fix named arg different position crash on InvokableCommandInputAttributeRector (#​905)
  • [CodeQuality] Skip UserInterface instance on ControllerMethodInjectionToConstructorRector (#​904)
  • create ClassMethod directly in InvokableCommandInputAttributeRector, to keep newline per attribute (#​903)
  • Remove InvokableCommandInputAttributeRector from set (#​901)
  • [Validator] use constants for Email (#​900), Thanks @​JohJohan

rectorphp/rector-doctrine 🟠


rectorphp/rector-phpunit 🟢

  • [AnnotationsToAttributes] Handle both annotation and attributes exists on DataProviderAnnotationToAttributeRector (#​603)
  • [fix] skip AddInstanceofAssertForNullableArgumentRector on assert call (#​602)
  • [code-quality] Add AddInstanceofAssertForNullableArgumentRector (#​601)
  • use FileNode in DeclareStrictTypesTestsRector (#​599)

v2.2.14: Released Rector 2.2.14

Compare Source

Bugfixes 🐛

  • [fix] warn early about deprecated skipped rules, as not neccessary to skip anymore + restore FirstClassCallableRector and mark as deprecated to keep BC (#​7742)

v2.2.13: Released Rector 2.2.13

Compare Source

Bugfixes 🐛

  • [fix] restore missing pInterpolatedStringPart(), cover with test (#​7741)

v2.2.12: Released Rector 2.2.12

Compare Source

Bugfixes 🐛

  • [cleanup] Make FirstClassCallableRector use attributes over node traverser hacks (#​7696)
  • [CodingStyle] Skip enum case on NewlineBetweenClassLikeStmtsRector (#​7698), Thanks @​parth391!
  • [fix] skip all-but standalone assign on SetTypeToCastRector (#​7699)
  • [fix] avoid changing generic interface in NarrowObjectReturnTypeRector, focus on objects as in definition (#​7700)
  • Remove direct NodeTravser::* where possible, use node visitor attribute key instead (#​7697)

Removed and Deprecated 💀

  • [dx] add stmts aware deprecation notice in `getNodeTypes()`` (#​7692)

rectorphp/rector-symfony 🎵

  • [Symfony 8.0] move RemoveEraseCredentialsRector from symfony 7.3 to symfony 8.0 (#​895), Thanks @​EJTJ3
  • [CodeQuality] Skip different service same name on ControllerMethodInjectionToConstructorRector (#​894)
  • [code-quality] Skip enum in ControllerMethodInjectionToConstructorRector (#​893)

v2.2.11: Released Rector 2.2.11

Compare Source

Bugfixes 🐛

  • [cleanup] Make FirstClassCallableRector use attributes over node traverser hacks (#​7696)
  • [CodingStyle] Skip enum case on NewlineBetweenClassLikeStmtsRector (#​7698), Thanks @​parth391!
  • [fix] skip all-but standalone assign on SetTypeToCastRector (#​7699)
  • [fix] avoid changing generic interface in NarrowObjectReturnTypeRector, focus on objects as in definition (#​7700)
  • [transform] tidy up array dim fetch to method call rector (#​7694)
  • Remove direct NodeTravser::* where possible, use node visitor attribute key instead (#​7697)

Removed and Deprecated 💀

  • [dx] add stmts aware deprecation notice in getNodeTypes() (#​7692)

rectorphp/rector-symfony

  • [Symfony 8.0] move RemoveEraseCredentialsRector from symfony 7.3 to symfony 8.0 (#​895), Thanks @​EJTJ3
  • [CodeQuality] Skip different service same name on ControllerMethodInjectionToConstructorRector (#​894)
  • [code-quality] Skip enum in ControllerMethodInjectionToConstructorRector (#​893)

v2.2.10: Released Rector 2.2.10

Compare Source

New Features and Improvements 🥳


Bugfixes 🐛

  • [PhpParser] Add Stmt\Block to NodeGroup::STMTS_AWARE (#​7689)
  • skip already dim fetch variable on OrdSingleByteRector (#​7681)
  • [Php85] Handle crash on no arg on OrdSingleByteRector (#​7682)
  • [Php70] Handle return ternary on IfIssetToCoalescingRector (#​7683)
  • [CodingStyle] Skip use trait on NewlineBetweenClassLikeStmtsRector (#​7685)
  • [CodingStyle] Handle use trait after property on NewlineBetweenClassLikeStmtsRector (#​7687)
  • [CodeQuality] Skip with HTML on ShortenElseIfRector (#​7686)
  • [Variables] Fetch list super global variable names from PHPStan Scope::SUPERGLOBAL_VARIABLES constant (#​7663)
  • Fix typo in rule definition message (#​7690), Thanks @​simonschaufi!

rectorphp/rector-symfony 🎵

  • [code-quality] Skip enum in ControllerMethodInjectionToConstructorRector (#​893)
  • [symfony 7.3] Add CommandDefaultNameAndDescriptionToAsCommandAttributeRector (#​892)
  • [symfony 7.x] update sets (#​890)
  • [CodeQuality] Skip parent method exists on ControllerMethodInjectionToConstructorRector (#​889)
  • skip params with attributes in ControllerMethodInjectionToConstructorRector (#​887)
  • [stmts-aware] Use NodeGroup::STMTS_AWARE over StmtsAwareInterface (#​886)

rectorphp/rector-phpunit 🟢

  • [fix] Improve AssertComparisonToSpecificMethodRector for assert false (#​594)

v2.2.9: Released Rector 2.2.9

Compare Source

New Features and Changes 🥳

  • [exp] Add RemoveReturnThisFromSetterClassMethodRector (#​7624)
  • [exp] Add FluentSettersToStandaloneCallMethodRector (#​7625)
  • [dead-code] Add RemoveNextSameValueConditionRector (#​7525)
  • Update PHP upgrade support to version 8.5 (#​7644), Thanks @​guilheb!
  • [stmts-aware] Deprecate StmtsAwareInterface interface and replace with meta-type + groups (#​7679) - How to upgrade?

Bugfixes 🐛

  • Improve parent call fixture in Php4ConstructorRector not to use KEY constant (#​7642)
  • Improve ClassPropertyAssignToConstructorPromotionRector not to use STMT_KEY attribute value (#​7645)
  • [TypeDeclaration] Handle crash on combine union types on AddClosureParamTypeForArrayReduceRector (#​7636)
  • [TypeDeclaration] Skip no key generic object return on NarrowObjectReturnTypeRector (#​7623)
  • [CodingStyle] Do not use FullyQualified on "self" on ClosureFromCallableToFirstClassCallableRector (#​7632), Thanks @​devnix!
  • [Php80] Handle mix still annotation and already attribute on AnnotationToAttributeRector (#​7639), Thanks @​acoulton!
  • cleanup RemoveUnsuedPrivateMethodRector (#​7643)
  • re-index changed nodes only (#​7651)
  • avoid spl_object_id() if no change in AbstractRector (#​7653)
  • Refine bug report template formatting (#​7655), Thanks @​u01jmg3!
  • [Php85] Skip inside expression assign on ArrayFirstLastRector (#​7657)
  • Rename SymplifyQuoteEscapeRector to SimplifyQuoteEscapeRector (#​7658), Thanks @​VincentLanglet!
  • docs: fix typos in deprecation notice (#​7666), Thanks @​sir-kain!
  • [Dep] Ignore unknown class error on build/config/config-downgrade.php on shipmonk/composer-dependency-analyser to 1.8.4 (#​7668)
  • [dx] Make registration of custom NodeVisitor is easier (#​7669)
  • raise deps (rectorphp/rector-src@440d6d7)
  • [Experiment][Printer] Move AlwaysRememberedExpr tweak logic to separate service after a Match_ found (#​7654)
  • Narrow object return type v2 (#​7618), Thanks @​Orest-Divintari!
  • [Php80] Handle OpenApi\Attributes\Property example to keep numeric string on AnnotationToAttributeRector (#​7677)
  • keep file without namespace implementing interface to alling with other nodes (#​7679)
  • [EarlyReturn] Handle If, elseIf, else all returned on RemoveAlwaysElseRector (#​7659)
  • [DeadCode] skip Ds\Map::get() on RemoveNullArgOnNullDefaultParamRector (#​7665)

Removed 💀

  • [DeadCode] Skip used from property fetch reference on loop on RemoveUnusedVariableAssignRector (#​7635)
  • [internal] Extract ImmutableNodeTraverser from vendor, to remove patch and keep using cache for node types (#​7634)
  • Deprecated STMT_KEY and remove its set attribute value (#​7647)
  • [attribute] Remove unused AttributeKey::REPRINT_RAW_VALUE (#​7664)



rectorphp/rector-symfony 🎵

  • [stmts-aware] Use NodeGroup::STMTS_AWARE over StmtsAwareInterface (#​886)
  • Fix rule when method is __invoke (#​884), Thanks @​wilfi00
  • [CodeQuality] Do not replace variable assign on ControllerMethodInjectionToConstructorRector (#​883)
  • Handle Doctrine constraints in ConstraintOptionsToNamedArgumentsRector (#​882), Thanks @​johndodev
  • [CodeQuality] Skip FOS\RestBundle ParamFetcher on ControllerMethodInjectionToConstructorRector (#​881)
  • [CodeQuality] Skip autowire() method via @​required and Required attribute (#​880)
  • Fix scoped \ cleared on single quote string on ControllerMethodInjectionToConstructorRector (#​879)
  • [CodeQuality] Skip Common Entity contains subnamespaces on ControllerMethodInjectionToConstructorRector (#​878)
  • [CodeQuality] Skip from route path /edit/{id} on ControllerMethodInjectionToConstructorRector (#​877)
  • handle use var (#​875)
  • Remove STMT_KEY from rules (#​874)
  • Remove stmt key from LogoutHandlerToLogoutEventSubscriberRector (#​870)
  • Fix build of prefixed SymfonyFunctionName::REF and SymfonyFunctionName::SERVICE usage (#​869)
  • [config] Fix couple config autowire rules (#​868)
  • Fix unit test (#​867)
  • skip constructor in ControllerMethodInjectionToConstructorRector (#​866)
  • [code-quality] Add ControllerMethodInjectionToConstructorRector (#​865)



rectorphp/rector-phpunit 🟢

  • [CodeQuality] Skip Generator on AssertCompareOnCountableWithMethodToAssertCountRector (#​591)
  • remove stmt key from ConstructClassMethodToSetUpTestCaseRector (#​590)
  • Remove stmt key from TestListenerToHooksRector (#​589)
  • fix phpunit covers default class with short covers methods (#​588), Thanks @​irosner
  • [CodeQuality] Do not use FullyQualified on "self" on WithCallbackIdenticalToStandaloneAssertsRector (#​587)
  • [phpunit 10] Improve PropertyExistsWithoutAssertRector coverage (#​586)
  • [depre] Deprecate AssertPropertyExistsRector as method was removed in PHPUnit 10 (#​585)
  • [depre] Deprecate RemoveDataProviderParamKeysRector as the keys can be useful to improve test readability (#​584), Thanks @​MacDada
  • [CodeQuality] Handle on without namespace on DeclareStrictTypesTestsRector (#​583)

v2.2.8: Released Rector 2.2.8

Compare Source

New Features 🥳

  • [type-declaration] Add return data provider array type from strict test method param (#​7605)
  • [coding-style] Add NestedTernaryToMatchRector (#​7572)
  • [TypeDeclaration] Register NarrowObjectReturnTypeRector to type declaration set (#​7615)

Bugfixes 🐛

  • [Diffs] Handle --no-diffs usage to show file have been changed if any with --dry-run + --no-diffs (#​7619)
  • [Php81] Skip callable variadic in array_all() on FunctionLikeToFirstClassCallableRector (#​7606)
  • fix a syntax error in the ArrayFirstLastRector rule documentation (#​7613), Thanks @​esnard!
  • Narrow object return type (#​7575), Thanks @​Orest-Divintari!
  • [type-declaration] Rename NarrowTooWideReturnType to NarrowWideUnionReturnTypeRector (#​7614)
  • [TypeDeclaration] Also update generic collection docblock on NarrowObjectReturnTypeRector (#​7616)
  • [TypeDeclaration] Do not change valid generic docblock on NarrowObjectReturnTypeRector (#​7617)
  • [Privatization] Do not remove readonly on promoted property on PrivatizeFinalClassPropertyRector (#​7611)

Removed 💀

  • [dx] help - omit explicit command name as no longer needed; remove verbosity option, use debug instead (#​7620)

rectorphp/rector-symfony 🎵

  • ensure reset args after loop (#​864)
  • Bump PHPStan to ^2.1.32 and fix test for InlineClassRoutePrefixRector (#​863)
  • [Symfony74] replace PropertyMetadata deprecated functions (#​862), Thanks @​MrYamous
  • [Symfony74] update WorkflowDumpCommand namespace (#​861), Thanks @​MrYamous
  • add property support to ErrorNamesPropertyToConstantRector (#​860)
  • Support converting all options to twig attributes (#​859), Thanks @​Spea

rectorphp/rector-phpunit 🟢

  • [CodeQuality] Skip in static method on AssertFuncCallToPHPUnitAssertRector (#​582)
  • add implicit method call support (#​581)
  • add multi callbacks support (#​580)
  • allow extra stmt (#​579)
  • add dynamic instanceof support (#​578)
  • [code-quality] Add SimplerWithIsInstanceOfRector (#​577)
  • add sole instanceof support (#​576)
  • add use var (#​575)
  • add return type or empty if nothing to add (#​574)
  • [code-quality] Add MergeWithCallableAndWillReturnRector (#​573)
  • handle solo identical as well, to get better message (#​572)
  • always return true, as required by contract (#​571)
  • add external variable use (#​570)
  • add isset support, revert order to respect original one (#​569)
  • [code-quality] Add WithCallbackIdenticalToStandaloneAssertsRector (#​568)

rectorphp/rector-downgrade-php ⬇️

  • Bump to PHPStan ^2.1.32 and ignore false positive instanceof in OR usage (#​344)

v2.2.7: Released Rector 2.2.7

Compare Source

New Features 🥳

  • [type-declaration] Add ReturnIteratorInDataProviderRector (#​7593)
  • [type-declarations] Add TypedStaticPropertyInBehatContextRector (#​7596)
  • [DeadCode] Register RemoveNullArgOnNullDefaultParamRector to dead code set (#​7597)
  • [php 8.5] Split of nested functions calls to pipe operator in a new standalone rule (#​7603)

Bugfixes 🐛

  • always add nullable on TypedPropertyFromJMSSerializerAttributeTypeRector as serializer does not use constructor (#​7599)
  • [Php81] Skip callable param union on FunctionLikeToFirstClassCallableRector (#​7589)
  • [CodeQuality] Skip ArrayDimFetch with BitwiseXor on CombinedAssignRector (#​7590)
  • [Php84] Skip variable extraction with return early on ForeachToArrayAllRector (#​7591)
  • [PHP 8.5] rename NestedToPipeOeratorRector to SequentialAssignmentsToPipeOperatorRector, handle only assigns, not nested calls (#​7588)
  • [Php81] Skip as Arg of non-native function call on FunctionLikeToFirstClassCallableRector (#​7592)
  • skip different args passed to call-like and required by arrow function in FunctionLikeToFirstClassCallableRector (#​7594)
  • handle public properties in TypedPropertyFromJMSSerializerAttributeTypeRector as nullable (#​7595)
  • skip to many in /TypedPropertyFromJMSSerializerAttributeTypeRector (#​7598)
  • skip refernce one as well in /TypedPropertyFromJMSSerializerAttributeTypeRector (rectorphp/rector-src@842aa94)
  • split TypedPropertyFromJMSSerializerAttributeTypeRector to scalar and object types (#​7602)
  • Don't require parentheses for short-ternaries (#​7604), Thanks @​martinstuecklschwaiger!

rectorphp/rector-symfony 🎵

  • [Configs] Skip first class callable on RemoveConstructorAutowireServiceRector (#​858)

rectorphp/rector-phpunit 🟢

  • [depre] Deprecate SetUpBeforeClassToSetUpRector as can break code easily (#​567)

v2.2.6: Released Rector 2.2.6

Compare Source

New Features 🥳

  • [PHP 8.5] Add NestedToPipeOperatorRector (#​7577)
  • [code-quality] Add DirnameDirConcatStringToDirectStringPathRector (#​7552)
  • [dead-code] Add RemoveNullArgOnNullDefaultParamRector (#​7562)
  • register AddClosureParamTypeFromIterableMethodCallRector to type declaration set (rectorphp/rector-src@4d78f41)
  • register AddParamArrayDocblockBasedOnCallableNativeFuncCallRector in type declaration docblocks (rectorphp/rector-src@80f7db8)

Bugfixes 🐛

  • Fix next catch missed variable rename in CatchExceptionNameMatchingTypeRector (#​7547)
  • [Php81] Fix first class callable should not have trailing comma on FunctionLikeToFirstClassCallableRector (#​7551)
  • [CodingStyle] Skip Method target not found or defined only via @​method on FunctionLikeToFirstClassCallableRector (#​7553)
  • [Php81][CodingStyle] Allow both exists in both @​method and native method on FunctionLikeToFirstClassCallableRector (#​7559)
  • [Php81][CodingStyle] Skip param used as invokable function multi args on FunctionLikeToFirstClassCallableRector (#​7563)
  • [Php81][CodingStyle] Skip Closure/ArrowFunction as assign expr on FunctionLikeToFirstClassCallableRector (#​7564)
  • finalize rules as well (#​7575), Thanks @​Orest-Divintari!
  • [Php85] Clean up dynamic expr check on NestedToPipeOperatorRector (#​7578)
  • [Php81] Skip Closure bindTo on FunctionLikeToFirstClassCallableRector (#​7581)
  • Remove trait support rom AddParamBasedOnParentClassMethodRector as depends on context; move to Class_ node hooking for efficiency (#​7587)
  • [Php85] Handle indent inside class method on NestedToPipeOperatorRector (#​7584)
  • make DeclareStrictTypesRector skip files without namespace, as very risky in files without PSR-4 autodiscovery (#​7585)
  • speedup - skip refleciton if all params are typed (rectorphp/rector-src@08f6dc3)
  • skip all-typed properties in TypedPropertyFromStrictConstructorRector (rectorphp/rector-src@c5d9fdf)
  • skip no-type params in RenameParamToMatchTypeRector (rectorphp/rector-src@cd7eb93)
  • optimize ParamTypeByParentCallTypeRector to handle only classes with parents and method without param type (rectorphp/rector-src@0ca4e91)
  • [DeadCode] Allow FuncCall on RemoveNullArgOnNullDefaultParamRector (#​7567)
  • [DeadCode] Handle with middle default not null on RemoveNullArgOnNullDefaultParamRector (#​7565)
  • [DeadCode] Allow remove named argument if position is match with param on RemoveNullArgOnNullDefaultParamRector (#​7566)
  • [comments] Remove attribute comments support as comments require standalone line before any doctrine annotation (#​7582)

Removed and Deprecated 💀

  • [depre] Deprecate ParentClassToTraitsRector as very narrow use case to be generic, create custom rule instead (#​7550)
  • [depre] Deprecate ReplaceParentCallByPropertyCallRector as not used since doctrine set service removed, not standalone rule (#​7554)
  • [depre] Deprecate MethodCallToNewRector as not used and based on assumptions (#​7555)
  • [depre] Deprecate MethodCallToPropertyFetchRector, as not practical/used and part of removed set (#​7556)
  • [depre] Deprecate MethodCallToPropertyFetchRector as not used and part of removed set (#​7557)
  • [depre] Deprecate PropertyFetchToMethodCallRector not used and as too generic, use custom rule instead (#​7558)
  • [depre] Deprecate PropertyAssignToMethodCallRector as too narrow use-case and never used (#​7561)
  • [depre] Deprecate ReturnTypeWillChangeRector as discourages from filling correct types, use type declaration set instead (#​7570)
  • [depre] Deprecate MultiDimensionalArrayToArrayDestructRector as not part of any set, can create less readable and harder to analyse code (#​7573)
  • [depre] Deprecate InlineVarDocTagToAssertRector as not par of any set, and create prod crashing code (#​7574)
  • [depre] Deprecate AddAllowDynamicPropertiesAttributeRector, as not in PHP sets and does not help by adding attribute everywhere (#​7568)
  • [depre] Deprecate AddLiteralSeparatorToNumberRector as cannot be automated and depends on context (#​7569)

rectorphp/rector-symfony 🎵

  • [Configs] Skip first class callable on RemoveConstructorAutowireServiceRector (#​858)
  • [config] Add FromServicePublicToDefaultsPublicRector (#​857)
  • cover 2nd arg class in RemoveConstructorAutowireServiceRector (#​856)
  • [config] Add RemoveConstructorAutowireServiceRector (#​855)
  • [Symfony73] Skip empty result of named arguments on ConstraintOptionsToNamedArgumentsRector (#​853)
  • [depre] Deprecate StringExtensionToConfigBuilderRector as deprecated in Symfony 7.4 (#​854)

rectorphp/rector-phpunit 🟢

  • [code-quality] Add DeclareStrictTypesTestsRector to code-quality test (#​566)
  • [depre] Deprecate AddParentSetupCallOnSetupRector as not generic to be automated, fill manually where needed (#​565)
  • [CodeQuality] Skip used inside static closure on AssertFuncCallToPHPUnitAssertRector (#​564)
  • register ReplaceAtMethodWithDesiredMatcherRector to code-quality (#​563)
  • [depre] Deprecate CreateMockToAnonymousClassRector as requires manual work, often value object setter can be better alternative (#​562)

v2.2.5: Released Rector 2.2.5

Compare Source

Rules Registered in sets 🥳

Couple long-existing rules were added to PHP 8.1, code quality and type declaration sets after optional community testing ✔️
If you'll experience any undersired changes, let us know 👍


Bugfixes 🐛

  • [fix] skip variadic param on ParamTypeByParentCallTypeRector (#​7532)
  • [Php81][CodingStyle] Skip multi params on FunctionLikeToFirstClassCallableRector (#​7537)
  • [Php81][CodingStyle] Skip callable param assign with signature multi params on FunctionLikeToFirstClassCallableRector (#​7538)
  • Fix NullToStrictStringFuncCallArgRector with probabilistic check for plural array passed to function where array allowed (#​7539)
  • [Php81][CodingStyle] Skip variadic not used on FunctionLikeToFirstClassCallableRector (#​7540)
  • [Php81] Keep nullable param on NewInInitializerRector (#​7545)
  • [php 8.1] skip nullable property without null default in NewInInitializerRector (#​7546)

Removed and deprecated 💀

  • [depre] Deprecate 3 configurable-only, never used closure param rules as too specific (#​7541)
  • [depre] Deprecate RenameFunctionLikeParamWithinCallLikeArgRector as never used, too narrow and better suits custom project (#​7544)
  • [depre] Deprecate AddTypeFromResourceDocblockRector as breaks code and does not solve any real problem (#​7542)
  • [Php81] Completely remove AttributeGroupNewLiner (#​7536)



rectorphp/rector-phpunit 🟢

  • [depre] Add never used AddCoversClassAttributeRector, as very opionated and requires very specific file location - use custom rule instead (#​561)
  • Fix implicit PHP and PHPUnit version in RequiresAnnotationWithValueToAttributeRector (#​560)
  • [code-quality] Add AssertArrayCastedObjectToAssertSameRector (#​559)

v2.2.4: Released Rector 2.2.4

Compare Source

New Features 🥳

  • [code-quality] Add RepeatedAndNotEqualToNotInArrayRector (#​7517)
  • [code-quality] Add ReplaceConstantBooleanNotRector (#​7527)
  • [code-quality] Add VariableConstFetchToClassConstFetchRector (#​7457)
  • [coding-style] Add BinaryOpStandaloneAssignsToDirectRector (#​7466)

Bugfixes 🐛


Configuration

📅 Schedule: 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 has been generated by Renovate Bot.

@claude
Copy link

claude bot commented Dec 20, 2025

PR Review: Update rector/rector to ^2.0

Summary

This is a Renovate bot PR that updates the Rector dependency from ^1.2 to ^2.0 in the third_party/astrolabe/vendor-bin/rector directory. This is a major version upgrade that requires careful consideration.

Code Quality

  • Clean dependency update: The change is minimal and focused - only updating the version constraint in composer.json and the corresponding lock file
  • Proper semantic versioning: The constraint uses ^2.0 which allows patch and minor updates within v2

Potential Issues

1. Breaking Changes (HIGH PRIORITY)

Rector 2.0 includes significant breaking changes according to the release notes:

  • StmtsAwareInterface deprecation: Replaced with meta-type + groups pattern
  • PHP version requirement: Now requires PHP ^7.4|^8.0 (previously ^7.2|^8.0)
  • PHPStan upgrade: Bumped from ~1.12 to ^2.1.33 (major version change)
  • API changes: Multiple rector rules deprecated or refactored

2. Configuration Compatibility

The rector.php configuration file uses the RectorConfig::configure() API. Need to verify:

  • Configuration syntax appears compatible (uses withPaths(), withPhpSets(), withPreparedSets())
  • Should verify all prepared sets are still available in v2.0

Testing Requirements

CRITICAL: This PR appears to have no test coverage verification. Before merging:

  1. Run Rector locally on the astrolabe codebase
  2. Verify no breaking changes in the rector output
  3. Check for deprecation warnings that might affect future upgrades
  4. Ensure all configured rule sets still work as expected

Performance Considerations

  • Rector 2.0 includes performance improvements (avoid spl_object_id() if no change, re-index changed nodes only)
  • Should see equal or better performance

Security Concerns

  • No security concerns identified
  • This is a dev-only dependency used for code quality/refactoring

Recommendations

Before merging:

  1. Test rector execution on the astrolabe codebase
  2. Review any rector output for unexpected changes
  3. Verify CI passes (if configured)
  4. Check if any custom rector rules are used that might be affected

After merging:

  • Monitor for any issues with the rector tooling in CI/local development
  • Consider updating rector configuration if deprecation warnings appear

Verdict

CONDITIONAL APPROVAL - This update should be safe IF rector runs successfully on the codebase without unexpected changes. The major version bump requires validation before merging.


Review performed by Claude Code following repository conventions from CLAUDE.md

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.

1 participant