Skip to content

Releases: rectorphp/rector

Released Rector 2.1.4

15 Aug 14:44
Compare
Choose a tag to compare

Bugfixes 🐛

  • [Php85] Rename deprecated casts (#7138), Thanks @mttsch!
  • [Console] Fix symfony/console diff broken on windows on symfony/console 6.4.24 (#7148)
  • Use active voice and improve rule definitions (#7146), Thanks @simonschaufi!

Released: Rector 2.1.3

13 Aug 12:04
Compare
Choose a tag to compare

New Features 🥳

  • Add ClosureFromCallableToFirstClassCallableRector rule (#7071), Thanks @devnix!
  • [Php81] added RemoveReflectionSetAccessibleCallsRector (#7085), Thanks @NickSdot!
  • [type-declaration] Add AddReturnTypeFromTryCatchTypeRector (#7099)
  • Add check phpstan if phpstan is running on preload.php (#7040)
  • [type-coverage] Add support for same returned object in ReturnTypeFromReturnNewRector (#7096)
  • feat: add support for set, isset, and unset operations in ArrayDimFetchToMethodCallRector (#7095), Thanks @calebdw!
  • [TypeDeclaration] Skip try catch finally different type on AddReturnTypeFromTryCatchTypeRector (#7101)
  • [type-declaration] Add AddArrayFilterClosureParamTypeRector (#7111)
  • [type-coverage] Improve AddArrowFunctionParamArrayWhereDimFetchRector to handle multiple functions (#7112)
  • add list<...> support to AddArrayFunctionClosureParamTypeRector (#7116)
  • feat: add RemoveReadonlyPropertyVisibilityOnReadonlyClassRector (#7115), Thanks @calebdw!
  • feat: add laravel to RectorConfigBuilder::withComposerBased (#7110), Thanks @calebdw!
  • [Renaming] Add RenameCastRector (#7117), Thanks @mttsch!
  • [type-declarations] Add TypedPropertyFromDocblockSetUpDefinedRector (#7135)

PHP 8.5 🚀

  • [Php85] Add missing url about openssl_pkey_derive arg deprecation (#7141), Thanks @mttsch!
  • [Php85] Remove deprecated arg from openssl_pkey_derive calls (#7127), Thanks @mttsch!
  • [Php85] Remove arg from get_defined_functions calls (#7126), Thanks @mttsch!
  • [Php85] Remove context arg from finfo_buffer calls (#7129), Thanks @mttsch!
  • [Php85] Rename socket_set_timeout function calls (#7121), Thanks @mttsch!
  • [Php85] Rename mysqli_execute function calls (#7122), Thanks @mttsch!
  • [Php85] Rename deprecated SplObjectStorage methods (#7123), Thanks @mttsch!
  • [Php85] Rename deprecated PDO constants and methods (#7125), Thanks @mttsch!
  • [Php85] Replace null return with empty array in __debugInfo (#7124), Thanks @mttsch!

Bugfixes 🐛

  • [TypeDeclaration] Handle crash on direct callable without params on AddArrayFunctionClosureParamTypeRector (#7131)
  • [TypeDeclaration] Skip ArrayAccess as array item type on AddArrowFunctionParamArrayWhereDimFetchRector (#7113)
  • [Renaming] Allow rename attribute on Param on RenameAttributeRector (#7072)
  • [CodeQuality] Mirror comment on InlineConstructorDefaultToPropertyRector (#7074)
  • [CodeQuality] Move logic directly for merge comments on InlineConstructorDefaultToPropertyRector (#7075)
  • [CodingStyle] Fix variable in the middle on WrapEncapsedVariableInCurlyBracesRector (#7076)
  • [CodeQuality] Skip Never type by @return docblock on ExplicitReturnNullRector (#7078)
  • [Naming] Skip var used after switch on RenameForeachValueVariableToMatchExprVariableRector (#7080)
  • [Naming] Use ScopeFetcher::fetch() near its usage on RenameForeachValueVariableToMatchExprVariableRector (#7081)
  • [AutoImport] Handle auto import short name on global namespace (#7086)
  • [TypeDeclaration] Skip ArrayAccess on StrictArrayParamDimFetchRector (#7087)
  • [Php81] Handle on ternary on NullToStrictStringFuncCallArgRector (#7091)
  • fix: sorting of named parameters in variadic functions (#7090), Thanks @calebdw!
  • fix: skip AssignOps in ArrayDimFetchToMethodCallRector (#7100), Thanks @calebdw!
  • Skip PhpdocTypesFixer of PhpCsFixer on Scalar node (#7103)
  • fix: skip variable assignments in get_defined_vars (#7106), Thanks @calebdw!
  • [Php80] Skip not match property hook type with parameter type on ClassPropertyAssignToConstructorPromotionRector (#7109)
  • [DeadCode] Early check GenericTypeNode is not dead code on DeadVar/ReturnParam Analyzer (#7118)
  • [Config] Allow php85: true on withPhpSets() (#7130)
  • [Php84] Allow on return on ForeachToArrayAnyRector (#7119), Thanks @Orest-Divintari!
  • [TypeDeclaration] Keep Generic type docblock on TypedPropertyFromDocblockSetUpDefinedRector (#7140)
  • fix: allow more nodes to be passed to AttributeGroupNewLiner (#7145), Thanks @calebdw!
  • [DeadCode] Skip used in compact() on RemoveUnusedForeachKeyRector (#7073)
  • [DeadCode] Handle assign on Arg on RemoveUnusedPrivatePropertyRector (#7092)
  • [DeadCode] Skip Templated type on param and return on RemoveUselessParamTagRector and RemoveUselessReturnTagRector under IntersectionType (#7093)
  • [DeadCode] Skip mixed fallback null on trait on RemoveAlwaysTrueIfConditionRector (#7098)
  • [DeadCode] Skip with first class callable on RemoveUnusedPrivateMethodParameterRector (#7104)
  • [DeadCode] Skip with get_defined_vars() on RemoveUnusedPrivateMethodParameterRector ([#7105](rectorphp/rector-src#7105


rectorphp/rector-symfony 🎵

  • [CodeQuality] Skip got duplicated method after suffix removed on ActionSuffixRemoverRector (#827)
  • Keep AsCommand in InvokableCommandInputAttributeRector documentation (#824), Thanks @bobvandevijver



rectorphp/rector-doctrine 🟠

  • [CodeQuality] Keep param/return doc with description on TypeNullableEntityFromDocblockRector (#460)
  • [code-quality] Add TypeNullableEntityFromDocblockRector to add safe types to doctrine entities (#459)



rectorphp/rector-phpunit 🟢

  • Cover array shape iterator for YieldDataProviderRector+RemoveUselessReturnTagRector. (#505), Thanks @biozshock

Released Rector 2.1.2

17 Jul 19:37
Compare
Choose a tag to compare

Bugfixes 🐛

  • Rectify (#7058)
  • [Php82] Handle array dim fetch variable on VariableInStringInterpolationFixerRector (#7060)
  • [Php82] Ensure ArrayDimFetch var is Variable to transform {$ on VariableInStringInterpolationFixerRector (#7061)
  • Update LNumber and DNumber to Int_ and Float_ (#7062)
  • [DeadCode] Handle crash on empty content on SimplifyIfElseWithSameContentRector (#7063)
  • Fix return on SimplifyIfElseWithSameContentRector (#7064)
  • [CodeQuality] Skip when class has __isset() method on IssetOnPropertyObjectToPropertyExistsRector (#7067)
  • [ReplaceArgumentDefaultValueRector] handle multiple replace argument values (#9256) (#7068), Thanks @JohJohan!

New Features 🥳

  • [Php56] Add parentheses on unary minus pow left on PowToExpRector (#7065)

Removed 💀

  • [removal] Remove RectorConfigBuilderRector as not maintained and broken (#7066)

rectorphp/rector-symfony

  • [SYMFONY 4.4] replace Link withRel and withoutRel argument values with constants (#821), Thanks @JohJohan
  • [SYMFONY 5.1] replace Cookie withSameSite argument values with constants (#819), Thanks @JohJohan
  • [SYMFONY 4.2] replace Cookie argument values with constants (#818), Thanks @JohJohan
  • [SYMFONY 3.2] replace Cookie argument values with constants (#817), Thanks @JohJohan
  • [SYMFONY 6.3] replace Link argument values with constants (#816), Thanks @JohJohan
  • [Symfony73] Handle nested array on ConstraintOptionsToNamedArgumentsRector (#815)
  • [Symfony 74] Rename Application::add() to Application::addCommand() (#813), Thanks @mttsch
  • [SYMFONY 4.4] replace Link argument values with constants (#812), Thanks @JohJohan
  • [Symfony 74] Rename Application::add() to Application::addCommand() (#809), Thanks @mttsch

rectorphp/rector-doctrine

  • Update deprecated ArrayItem, Lnumber to use under Node, and Int_ instead (#456)

rectorphp/rector-phpunit

  • Update to use ArrayItem under Node (#504)

rectorphp/rector-downgrade-php

  • [DowngradePhp80] Handle not match @return with native return type on DowngradeUnionTypeDeclarationRector (#295)
  • Clean up origNode set on DowngradeArrayAllRector (#294)
  • [DowngradePhp84] Add DowngradeArrayFindKeyRector (#293)
  • [DowngradePhp84] Add DowngradeArrayFindRector (#292)
  • [DowngradePhp84] Add DowngradeArrayAnyRector (#291)
  • [DowngradePhp84] Add DowngradeArrayAllRector (#290)

Released Rector 2.1.1

10 Jul 11:47
Compare
Choose a tag to compare

New Features 🥳

  • [Php84] Add message name on multilines on DeprecatedAnnotationToDeprecatedAttributeRector (#7030)
  • Add SortNamedParamRector (#7047), Thanks @VincentLanglet!

Bugfixes 🐛

  • [CodeQuality] Properly handle Goto_ on ExplicitReturnNullRector (#7018)
  • [Php84] Skip non-array on ForeachToArray* rules (#7023)
  • [Console] Handle hidden "process" with --option without = on ConsoleApplication (#7022)
  • [Php80] Handle with property hook on ClassPropertyAssignToConstructorPromotionRector (#7024)
  • [Scoped] Exclude DateRangeError on Scoper for prefixing (#7027)
  • [Php84] Handle multi lines text on DeprecatedAnnotationToDeprecatedAttributeRector (#7028)
  • [Php55] Avoid $scope = ScopeFetcher::fetch($node); when not needed on GetCalledClassToStaticClassRector (#7029)
  • Fix crash on ExactCompareFactory::createBooleanAnd/Or (#7031)
  • Move ScopeFetcher::fetch() to near its usage (#7032)
  • [CodeQuality][Php84] Handle crash on ForeachToArrayFindRector+OptionalParametersAfterRequiredRector (#7033)
  • [Php84] Skip foreach value used after foreach on ForeachToArray* rules (#7034)
  • [Php84] Handle key used on conditional on ForeachToArray* rules (#7035)
  • [code-quality] Make ctor defined dynamic properties private, as most probably case (#7036)
  • [PostRector] Keep first comment after declare(strict_types=1) on UnusedImportRemovingPostRector (#7042)
  • [Php80] Make configurable to allow skip on model based classes on ClassPropertyAssignToConstructorPromotionRector (#7043)
  • [Kaizen] Save kaizen applied rules into cache to make works on parallel (#7046)
  • [Kaizen] No need filter unchanged files when --kaizen is used (#7050)
  • [Kaizen] When no files changed, early return empty on FilesFinder, even on kaizen (#7051)
  • [Kaizen] Enforce clear cache when there is files changed + kaizen enabled (#7052)
  • Fix ambiguous variable name (#7053)
  • [Php84] Handle with space on message like class name constant on DeprecatedAnnotationToDeprecatedAttributeRector (#7056)
  • [CodeQuality] LogicalToBooleanRector should add parentheses on equal (#7048)
  • [Kaizen] Remove unneeded clean kaizen cache since all cache cleared early when there are files to be changed + kaizen enabled (#7054)



rectorphp/rector-symfony 🎵

  • Fix code style issues (#810), Thanks @mttsch
  • [Symfony 74] Rename Application::add() to Application::addCommand() (#809), Thanks @mttsch
  • Fix links to Symfony 7.2/7.3 upgrade documents (#808), Thanks @mttsch
  • [Symfony 7.3] Handle existing named array arguments in ConstraintOptionsToNamedArgumentsRector (#807), Thanks @gharlan
  • [Symfony 73] add ConstraintOptionsToNamedArgumentsRector (#806), Thanks @pedrocasado
  • Twig attributes: make methods public (#805), Thanks @gharlan
  • AddVoteArgumentToVoteOnAttributeRector (#804), Thanks @tugmaks
  • [CodeQuality] Skip first class callable on StringCastDebugResponseRector (#803)
  • [code-quality] Add StringCastDebugResponseRector (#802)
  • add casting to string to AssertSameResponseCodeWithDebugContentsRector as response can be null, and message requires string (#801)

rectorphp/rector-doctrine 🟠

  • [dbal 3.8] Add MigrateQueryBuilderResetQueryPartRector (#455), Thanks @simonschaufi

rectorphp/rector-phpunit 🟢

  • feat: make AddCoversClassAttributeRector configurable (#502), Thanks @canvural
  • Support PHPUnit 12 in composer based set (#501), Thanks @alleknalle
  • [Attribute] Handle comment below @dataProvider doc on DataProviderAnnotationToAttributeRector (#500)
  • [code-quality] Add StringCastAssertStringContainsStringRector (#498)

Released Rector 2.1

24 Jun 21:49
Compare
Choose a tag to compare

This release comes with new PHP 8.4 rules and 2 new config options, that make rules more powerful 💪


New Features 🥳

  • [PHP 8.4] Implement array_find_key upgrade (#7008), Thanks @xHeaven!
  • [PHP 8.4] Implement array_find upgrade (#7009), Thanks @xHeaven!
  • [PHP 8.4] Implement array_all upgrade (#7011), Thanks @xHeaven!
  • [PHP 8.4] Implement array_any upgrade (#7010), Thanks @xHeaven!
  • [code-quality] add TernaryImplodeToImplodeRector (#6994)

In this release we also add 2 DX features to streamline upgrades:

  • [DX] Add ->withTreatClassesAsFinal() on so can be used in typed rules (#6974)
    • this extends more conservative rules to apply on classes that are not final
  • [experimental] Add --kaizen option to apply only first X rules at a time (#6876)
    • this option will apply first X rules; especially great to make upgrade steps small, but relevant - check the PR for more

Bugfixes 🐛

  • [Php80] Skip non-abstract method trait on AddParamBasedOnParentClassMethodRector (#6992)
  • [Php81] Skip has JMS attribute on ReadOnlyPropertyRector (#6979)
  • [TypeDeclaration] Move JMS class string definition constant to ClassName value object (#6980)
  • [PhpAttribute] Ensure count($attributeGroups) before loop to avoid repetitive annotation product only single AttributeGroup (#6985)
  • [code-quality] use direct instanceof instead of dummy null, if nullable object type is known (#6987)
  • Fix object type in TypedPropertyFromJMSSerializerAttributeTypeRector (#6989)
  • ExplicitReturnNullRector: skip on goto (#6988), Thanks @staabm!
  • fix invalid string property type without default in PropertyTypeFromStrictSetterGetterRector (#6993)
  • [CodeQuality] Skip first class callable on TernaryImplodeToImplodeRector (#6997)
  • Fix: Array Duplicated Key which is dynamic (#6999), Thanks @peterfox!
  • [Php83] Ensure class->isAbstract() on FeatureFlags::treatClassesAsFinal() check (#7003)
  • [TypeDeclaration] Handle crash on generic iterable on TypedPropertyFromJMSSerializerAttributeTypeRector (#7004)
  • [TypeDeclaration] Use common has < string for detect iterable types (#7005)
  • Covers scenario where func_get_args used in constructor (#7006), Thanks @peterfox!
  • [DeadCode] Move Param used via variadic functions to ParamAnalyzer (#7016)
  • [DeadCode] Skip used by unpack and named argument on RemoveUnusedPrivateMethodParameterRector (#6976)
  • [DeadCode] Handle multiple default on RemoveArgumentFromDefaultParentCallRector (#6978)
  • [DeadCode] Skip abstract method on RemoveUnusedPublicMethodParameterRector (#7002)
  • [DeadCode] Allow named argument removal if argument position is equal with parameter position equal name on RemoveUnusedPrivateMethodParameterRector (#6977)
  • [Php80] Skip used in finally on RemoveUnusedVariableInCatchRector (#6982)
  • [DeadCode] Allow remove normal param that mix with property promotion on RemoveUnusedConstructorParamRector (#7017)

rectorphp/rector-symfony 🎵

  • fix to type arg name (#800)
  • [jms] Add AccessorAnnotationToAttributeRector (#799)
  • [jms] Add custom AccessTypeAnnotationToAttributeRector to handle annotation flip to attribute correctly (#798)

rectorphp/rector-doctrine 🟠

  • [typed-collections] Add RemoveNullFromInstantiatedArrayCollectionPropertyRector (#452)
  • skip behats (#451)
  • skip RemoveIfInstanceofCollectionRector in tests (#450)
  • add generic union support (#448)
  • add param / return test fixture (#447)
  • add docblock support to NarrowArrayCollectionToCollectionRector (#446)
  • initialize default array even for non-entity-property collections (#445)
  • remover default null (#444)
  • add local call setter support (#443)
  • Add intersection support to NarrowPropertyUnionToCollectionRector (#442)
  • remove nullable property type (#441)
  • Add native return type declaration support to NarrowReturnUnionToCollectionRector (#440)
  • add array-filter to ArrayMapOnCollectionToArrayRector (#439)
  • [typed-collections] Add CurrentOnCollectionToArrayRector (#438)
  • [typed-collections] Add RemoveUselessIsEmptyAssignRector (#437)
  • add boolean and not null case (#436)
  • skip it (#435)
  • [typed-collections] Add RemoveIfCollectionIdenticalToNullRector (#434)
  • add native property type support to NarrowPropertyUnionToCollectionRector (#433)
  • add union null type support to RemoveNullFromNullableCollectionTypeRector (#431)
  • add nullable property doclbock support to RemoveNullFromNullableCollectionTypeRector (#430)
  • [typed-collections] Add ArrayOffsetSetToSetCollectionCallRector (#429)
  • include message as well (#428)
  • add static call support to AssertSameCountOnCollectionToAssertCountRector (#427)
  • keep args in RemoveNullsafeOnCollectionRector (#426)
  • [typed-collections] Add AssertSameCountOnCollectionToAssertCountRector (#425)
  • [typed-collections] Add RemoveAssertNotNullOnCollectionRector (#424)
  • [typed-collections] Add AssertNullOnCollectionToAssertEmptyRector (#423)

Released: Rector 2.0.18

11 Jun 11:23
Compare
Choose a tag to compare

New Features 🥳

  • Bump to PHP-Parser ^5.5.0 (#6946)
  • [DeadCode] Add RemoveArgumentFromDefaultParentCallRector (#6949)
  • [DeadCode] Add RemoveDeadCatchRector rule (#6939), Thanks @P3gucka!

Bugfixes 🐛

  • [Php80] Add more exact Expr node that always bool for switch(true) usage on ChangeSwitchToMatchRector (#6965)
  • [Php80] Prevent adding empty return when stringable always throws (#6968), Thanks @Mika-!
  • [php 8.0] Check if class is an attribute in AnnotationToAttributeRector, to avoid non-attribute bug (#6954)
  • [Transform] Fix FQCN usage on new name on MergeInterfacesRector (#6956)
  • Rectify (#6957)
  • [Printer] Skip change new line as space on anonymous class on print (#6958)
  • [Printer] Use regex string new space detection for anonymous class (#6959)
  • [Php80] Handle dynamic bool expr on ChangeSwitchToMatchRector (#6961)
  • [Php80] Do not change to match(true) on defined case cond on ChangeSwitchToMatchRector (#6962)
  • [Php80] Do not change to match(true) on variable from param on case cond on ChangeSwitchToMatchRector (#6963)
  • Fix fixture file name (#6964)
  • [Renaming] [Symfony 7.0] Skip ClassConstFetch that rename its ->class to Interface that constant not exists in new interface (#6966)
  • Fix stub (#6967)
  • [DeadCode] Clean up useless union StmtsAwareInterface|ClassMethod on TerminatedNodeAnalyzer (#6969)
  • [Php80] Handle has silent void on StringableForToStringRector (#6970)
  • [PostRector] Clean up rename process on ClassRenamingPostRector (#6971)
  • [DeadCode] Early check skip no extends on RemoveDefaultArgumentFromParentCallRector (#6950)
  • [DeadCode] Allow remove createMock method call on RemoveUnusedVariableAssignRector (#6951)
  • [DeadCode] Skip when next catch is parent class exception with special treatment over just throw on RemoveDeadCatchRector (#6952)

rectorphp/rector-symfony 🎵

  • [Symfony 7.3] Handle commands without configure method in InvokableCommandInputAttributeRector (#797), Thanks @gharlan
  • [Symfony 7.3] Handle fluent call addArgument and addOption on InvokableCommandInputAttributeRector (#795)
  • Twig attributes: add required first param (#793), Thanks @gharlan
  • Fix namespace of console Option attribute (#792), Thanks @gharlan
  • fix: Normalize variable names by replacing hyphens with underscores in Symfony73 command argument and option processing (#790), Thanks @antoniovj1
  • remove return tags in TemplateAnnotationToThisRenderRector as no longer needed (#788)
  • return array if is array type in TemplateAnnotationToThisRenderRector (#786)
  • Bump to php-parser 5.5.0 and update fixture attributes usage (#784)

rectorphp/rector-doctrine 🟠

  • [typed-collections] Add RemoveNullsafeOnCollectionRector (#420)
  • skip assign of New_ to CollectionParamTypeSetterToCollectionPropertyRector (#419)
  • fix reprint of type in CollectionSetterParamNativeTypeRector (#418)
  • Various improvements in typed-collections set (#417)
  • Skip RemoveNullFromNullableCollectionTypeRector if not exactly 1 param or in tests (#416)
  • [typed-collections] allow 2nd+ param to be nullable in CollectionSetterParamNativeTypeRector as most likely null can be passed as non-setter (#415)
  • cleanup redundant fixtures, single rule (#414)
  • [Dbal40] Skip different object on ExecuteQueryParamsToBindValueRector (#413)
  • [dbal 4.0] Add ExecuteQueryParamsToBindValueRector (#412)
  • [dbal 4.0] Add deprecated PDO class to enum like (#411)
  • [dbal 4.2] Add AddArrayResultColumnNamesRector (#410)

rectorphp/rector-downgrade-php ⬇️

  • [DowngradePhp73] Real patch for previous node token just swapped with trailing comma and named argument (take 2) (#288)
  • [Test] Add more test fixture for downgrade named argument with trailing comma (#287)
  • [Down to PHP 7.2] Handle download named argument with trailing comma (#285)

Released: Rector 2.0.17

30 May 11:16
Compare
Choose a tag to compare

New Features 🥳

  • [Php85] Add ArrayFirstLastRector (#6900)
  • Use active voice and add markdown style for code blocks (#6897), Thanks @simonschaufi!
  • [Php83] Add ReadOnlyAnonymousClassRector (#6916)
  • [Php83] Add DynamicClassConstFetchRector (#6922)
  • [Test] Add test for crash after reprint Stmt (#6924)
  • [Command] Fix to make additionalAutoloader->autoloadPaths() works on both parallel and non-parallel proccess (#6927)
  • [Alternative] Add EnumCaseToPascalCaseRector with use of DynamicSourceLocatorProvider (#6899)

Bugfixes 🐛

  • Directly use isNames() in rector rules (#6896)
  • [StrContainsRector] also replace multibyte functions fro strpos and strstr (#6901), Thanks @JohJohan!
  • [DeadCode] IsClassMethodUsedAnalyzer needs to use Scope from Class_ level (#6910)
  • [Php84] Skip with parentheses on class on NewMethodCallWithoutParenthesesRector (#6911)
  • [CodeQuality] Skip Assign Op on ternary on SimplifyUselessVariableRector (#6913)
  • Rectify to trigger latest build (#6914)
  • [Php82] Handle implicit public readonly on ReadOnlyClassRector (#6919)
  • Use dynamic check on last on ClassConstManipulator (#6921)
  • bump (rectorphp/rector-src@695228f)
  • [Naming] Re-use repetitive DateTimeInterface object type check on services into PropertyNaming service (#6926)
  • [AutoImport] Skip conflict aliased with docblock on auto import (#6929)
  • [AutoImport] Skip reserved class names on auto import (#6933)
  • [AutoImport] Fix empty uses on auto import + rename class on no namespaced file (#6935)
  • [Php83] Fix invalid constant use READONLY_CLASS -> READONLY_ANONYMOUS_CLASS on ReadOnlyAnonymousClassRector (#6936)
  • fix: RenameMethodRector does not rename trait methods (#6928), Thanks @LordSimal!
  • [CodeQuality] Skip late static binding use on CompleteDynamicPropertiesRector (#6938)
  • [dx] report false skipped rules in more nicer way (#6941)
  • [PHP84] Deprecated annotation to Deprecated attribute (#6923), Thanks @peterfox!
  • [Renaming] Allow rename method in trait itself on RenameMethodRector (#6942)
  • [Renaming] Handle rename caller on trait on RenameMethodRector (#6944)
  • [TypeDeclaration] Fix crash on already return static on AddReturnTypeDeclarationRector (#6940)
  • [TypeDeclaration] Handle crash on return different over static on AddReturnTypeDeclarationRector-a (#6943)

Removed 💀

  • Use active voice and remove note about PHPUnit (#6907), Thanks @simonschaufi!
  • [DeadCode] Skip used by Array callable on RemoveEmptyClassMethodRector (#6908)
  • [DeadCode] Use IsClassMethodUsedAnalyzer service on RemoveEmptyClassMethodRector (#6909)
  • [DeadCode] Handle called by static call on RemoveUnusedPrivateMethodParameterRector (#6912)
  • [DeadCode] Skip used by $this on RemoveUnusedPrivateClassConstantRector (#6920)



rectorphp/rector-symfony 🎵

  • Update to use ramsey/composer-install@v2 (#782)
  • [Symfony 7.3] Make __invoke() public in InvokableCommandInputAttributeRector (#779), Thanks @mickverm
  • Fix ClassConstFetch use on InvokableCommandInputAttributeRector (#778)
  • [Symfony 7.3] handle name from constant on InvokableCommandInputAttributeRector (#777)
  • [Symfony 7.3] Remove Argument argument: mode on InvokableCommandInputAttributeRector (#776), Thanks @mickverm
  • [Symfony 7.3] Make nullable argument param type on Optional InputArgument::OPTIONAL on InvokableCommandInputAttributeRector (#775)
  • [Symfony 7.3] Keep $output param on InvokableCommandInputAttributeRector (#774)
  • [Symfony 7.3] Add Argument arguments: name, mode, description on InvokableCommandInputAttributeRector (#773)
  • [Symfony 7.3] Handle with #[\Override] on InvokableCommandInputAttributeRector (#772)

rectorphp/rector-doctrine 🟠

  • skip default param array, to respect colleciton type (#408)
  • Add array<> support to /NarrowParamUnionToCollectionRector (#407)
  • [typed-collections] Add CollectionSetterParamNativeTypeRector (#406)
  • only remove new array collection to a new property (#405)
  • Update to use ramsey/composer-install@v2 (#404)
  • [typed-collections] Add embed many support InitializeCollectionInConstructorRector (#403)
  • Add static call support to setter array collection wrap (#402)
  • [typed-collections] Decouple RemoveIsArrayOnCollectionRector (#401)
  • [typed-collections] Allow new array in tests for RemoveNewArrayCollectionOutsideConstructorRector (#400)
  • [typed-collections] Allow new array in tests for RemoveNewArrayCollectionOutsideConstructorRector (#399)
  • [typed-collections] Add nullable support to array wrapper rule (#398)
  • [TypedCollections] Use directly param->type->type assign on RemoveNullFromNullableCollectionTypeRector (#397)
  • [typed-collections] Add RemoveNullFromNullableCollectionTypeRector rule (#396)
  • Typed collections fixes (#395)
  • [typed-collections] remove DefaultNewArrayCollectionRector as duplicate of InitializeCollectionInConstructorRector (#394)
  • Fix scoper Doctrine class in use statement prefixed with RectorPrefix (#393)
  • [typed-collections] Add dozens of rules to handle doctrine collection types (#392)
  • Rename ExplicitRelationCollectionRector to InitializeCollectionInConstructorRector (#391)
  • [typed-collections] Make TypedPropertyFromToManyRelationTypeRector work only for native types, docblocks are handled in another rule (#390)
  • [typed-collections] Decouple new namespace and move 4 rules there (#389)
  • Directly use isName(s) and getName() on rector rules (#388)
  • Add mapped superclass case to ToManyRelationPropertyTypeResolver (#387)
  • Remove array on collection in TypedPropertyFromToManyRelationTypeRector (#386)
  • Remove default null value in TypedPropertyFromToManyRelationTypeRector (#384)

rectorphp/rector-phpunit 🟢

Read more

Released Rector 2.0.16

12 May 16:39
Compare
Choose a tag to compare

New Features 🥳

  • [dx] add symfonyRoute and symfonyValidator option to ->withAttributesSets() to ease upgrade (#6882)
  • [nette/utils] [4.0] Add upgrade set to handle named args in Json class (#6884)

Bugfixes 🐛

  • [TypeDeclaration] Skip __destruct() from add return type based on parent on AddReturnTypeDeclarationBasedOnParentClassMethodRector (#6883)
  • [CodeQuality] Skip with init non empty dynamic array on ForeachItemsAssignToEmptyArrayToAssignRector (#6881)
  • UseIdenticalOverEqualWithSameTypeRector should not trust phpdoc (#6880), Thanks @staabm!
  • [Php70] Handle class named Pool on Php4ConstructorRector (#6887)
  • [Php73] Handle key() called multiple times on ArrayKeyFirstLastRector (#6888)
  • Clean up repetitive recursive call and flag on ArrayKeyFirstLastRector (#6889)
  • [Config] Handle config realpath() actually has asterisk, not pattern (#6891)
  • [Php82] Handle implicit "public" on construtor promotion on ReadOnlyClassRector (#6895)



rectorphp/rector-symfony 🎵

  • [Symfony73] Skip different object on GetFunctionsToAsTwigFunctionAttributeRector (#767)
  • skip magic first class callable (#766)
  • [symfony 7.2] AddPushRequestToRequestStackConstructorRector (#765)
  • [Symfony 7.3] kick off GetFunctionsToAsTwigFunctionAttributeRector (#764)
  • [Symfony 7.3] Handle first class callable on GetFiltersToAsTwigFilterAttributeRector (#763)
  • Register symfony73-twig-bundle into Symfony7SetProvider (#762)
  • [symfony 7.3] Add GetFiltersToAsTwigFilterAttributeRector to migrate #[TwigFilter] (#761)
  • [code-quality] Improve TemplateAnnotationToThisRenderRector to keep ternary types (#758)
  • Keep JsonResponse type (#757)
  • Remove array shape return in TemplateAnnotationToThisRenderRector as no longer used (#755)
  • Add attribute support to TemplateAnnotationToThisRenderRector (#754)
  • [7.3] Update InvokableCommandRector to InvokableCommandInputAttributeRector to improve discoverability (#743)

rectorphp/rector-doctrine 🟠

  • Remove array on collection in TypedPropertyFromToManyRelationTypeRector (#386)
  • Remove default null value in TypedPropertyFromToManyRelationTypeRector (#384)
  • [collection] Add embed many annotation support to TypedPropertyFromToManyRelationTypeRector (#383)
  • Fix #[AsListener] attribute location to doctrine bundle 2.8, deprecate doctrine constants and refer to composer based sets (#382)

rectorphp/rector-phpunit 🟢

  • Detect Test Attribute in TestsNodeAnalyzer::isTestClassMethod (#486), Thanks @Levivb
  • [code-quality] Skip ctor to setup in ConstructClassMethodToSetUpTestCaseRector for non-test classes, e.g. helpers (#485)
  • [phpunit 10] Add ParentTestClassConstructorRector (#484)

Released Rector 2.0.15

05 May 10:03
Compare
Choose a tag to compare

New features and changes 🎉

  • [parallel] bump default threads from 16 to 32 to keep up with modern technology (#6877)

Bugfixes 🐛

  • [TypeDeclaration] Reduce repetitive new ObjectType() on each properties on TypedPropertyFromCreateMockAssignRector (#6869)
  • [CodeQuality] Handle with parentheses on SimplifyIfReturnBoolRector (#6871)
  • [Naming] Skip protected property on non-final class on RenamePropertyToMatchTypeRector (#6872)
  • [PHPStan 2.1.14] Fix resolve __toString() parent non builtin method without return type (#6879)
  • [phpstan] prefer isName() from abstract class over protected service (#6875)
  • [DeadCode] Skip value from docblock on RemoveFilterVarOnExactTypeRector (#6873)



rectorphp/rector-symfony 🎵

  • [symfony 6.2] Fix attribute adding on abstract class in MessageHandlerInterfaceToAttributeRector (#724)

rectorphp/rector-phpunit 🟢

  • [depre] Remove deprecated AssertCountWithZeroToAssertEmptyRector (#483)
  • Ensure that rule PreferPHPUnitSelfCall refactor call only for static methods, not any (#482), Thanks @andrew-demb
  • [tests] add test fixture for double instanceof check (#481)
  • [PhpUnit] Skip different object on PreferPHPUnit(This/Self)CallRector (#480)

Released Rector 2.0.14

28 Apr 09:21
Compare
Choose a tag to compare

Bugfixes 🐛

  • [EarlyReturn] Skip re-assign in loop on PreparedValueToEarlyReturnRector (#6867)
  • [EarlyReturn] Only check on loop when initialAssign is set on PreparedValueToEarlyReturnRector (#6868)