Skip to content

Releases: rectorphp/rector

Released Rector 2.0.13

27 Apr 21:04
Compare
Choose a tag to compare

Bugfixes 🐛

  • [naming] Skip public properties in RenamePropertyToMatchTypeRector to avoid external code conflicts (#6860)
  • feat: handle edge cases of DateFuncCallToCarbonRector (#6822), Thanks @tony-stark-eth!
  • [CodeQuality] Skip ArrayDimFetch on IssetOnPropertyObjectToPropertyExistsRector (#6862)
  • [type-declaration] Skip intersection type on TypedPropertyFromCreateMockAssignRector (#6863)
  • [Configuration] Fix composer resolver with custom vendor-dir (#6864), Thanks @maxime-vf!
  • Ensure pass string on PathNormalizer::normalize() on InstalledPackageResolver (#6865)

rectorphp/rector-symfony 🎵

  • [Symfony 7.3] add constant and test for 7.3 and test help to attribute #718 (#722), Thanks @JohJohan
  • Update fixture on parent construct empty usage (#719)

rectorphp/rector-doctrine 🟠

  • improve add generics annotation to repository to code quality doctrine set (#380)

Released Rector 2.0.12

22 Apr 13:12
Compare
Choose a tag to compare

New Features 🥳

  • [dx] [experimental] Prepend command name automatically if only paths are passed (#6759)
# before
vendor/bin/rector process src

# now - default command is run, no need to write the sole main command manually
vendor/bin/rector src
  • [Configuration] [experimental] Add ability to specify file path without extension (#6839)
  • [type-declaration] Add AddClosureParamArrayWhereDimFetchRector (#6815)
  • [dx] add test to check that a rule is not applied if it does not change the code (#6794), Thanks @carlos-granados!
  • [renaming Add enum support to rename method (#6832)
  • [Php83] Make configurable to allow add #[\Override] on override empty method on AddOverrideAttributeToOverriddenMethodsRector (#6831)
  • [Transform] Follow parent construct before add new param on StaticCallToMethodCallRector (#6854)

Bugfixes 🐛

  • Skip DateTime from property type to property renaming to keep code readable (#6812)
  • Add a hint how to upgrade custom SetListInterface to Rector 2.0 (#6816), Thanks @alexander-schranz!
  • Return if var type has changed in PhpDocTypeChanger (#6813), Thanks @carlos-granados!
  • fix: RenamePropertyToMatchTypeRector renames DateTimeInterface (#6814), Thanks @tony-stark-eth!
  • [TypeDeclaration] ReturnTypeFromStrictNewArrayRector support list (#6820), Thanks @staabm!
  • [Php80] Handle null value on AnnotationToAttributeRector (#6821)
  • [DeadCode] Handle crash on no stmts on ReplaceBlockToItsStmtsRector (#6824)
  • [type-declaration] Override existing wrong type on TypedPropertyFromCreateMockAssignRector (#6826)
  • [TypeDeclaration] Skip already typed with PHPUnit\Framework\MockObject\MockObject on TypedPropertyFromCreateMockAssignRector (#6827)
  • [NodeTypeResolver] Pass null on 2nd arg on ReflectionProvider->getFunction() to ensure get correct function (#6829)
  • [Php80] Handle aliased with multi properties on AnnotationToAttributeRector (#6838)
  • [Configuration] Fix root standalone registered rules verify on RectorConfigBuilder (#6840)
  • [Php73] Fix escaped single quote on RegexDashEscapeRector (#6843)
  • [Php80] Handle crash on @testdoc with rector-phpunit AnnotationWithValueToAttributeRector (#6846)
  • Fix scoped error on ClassConstFetchAnnotationToAttributeMapper (#6848)
  • [PhpAttribute] Handle multi double colon on AnnotationWithValueToAttributeRector (#6851)
  • [Transform] Follow empty parent construct parameters on StaticCallToMethodCallRector (#6855)
  • [TypeDeclaration] Skip with closure inside on AddArrowFunctionParamArrayWhereDimFetchRector (#6817)
  • [Php71] Skip replaced native function on RemoveExtraParametersRector (#6828)
  • [DeadCode] Skip switch break not unreachable on RemoveUnreachableStatementRector (#6837)

rectorphp/rector-symfony 🎵

  • Clean up #[RunClassInSeparateProcess] tweak (#721)
  • [CodeQuality] Handle crash on no extensions on StringExtensionToConfigBuilderRector (#717)
  • add ampersand support (#716)
  • [code-quality] Add SplitAndSecurityAttributeToIsGrantedRector (#715)
  • [code-quality] Add SecurityAttributeToIsGrantedRector (#714)
  • [code-quality] Add attribute-existance check to SecurityAttributeToIsGrantedAttributeRector, add to code-quality set (#713)
  • Skip excluded tag in container (#710), Thanks @Myks92

rectorphp/rector-doctrine 🟠

  • [NodeAnalyzer] Handle no repositoryClass on RepositoryClassResolver (#379)
  • Fix ImproveDoctrineCollectionDocTypeInEntityRector (#378), Thanks @carlos-granados
  • Fix YamlToAttributeDoctrineMappingRector (#377), Thanks @carlos-granados

rectorphp/rector-phpunit 🟢

  • [PHPUnit100] Skip already key = null on RemoveNamedArgsInDataProviderRector (#475)
  • [PHPUnit90] Handle crash on different object without second arg on SpecificAssertContainsWithoutIdentityRector (#474)
  • add test fixture (#473)
  • Fix RemoveNamedArgsInDataProviderRector so that it is not applied if no change is made (#472), Thanks @carlos-granados
  • [CodeQuality] fix assertInstanceOf casing (#471), Thanks @staabm
  • [CodeQuality] Handle crash on multiple assert cause undefined variable on AddInstanceofAssertForNullableInstanceRector (#470)

Released Rector 2.0.11

28 Mar 10:44
Compare
Choose a tag to compare

New Features 🎉

  • [TypeDeclaration] Handle nested method crashes on AddParamTypeBasedOnPHPUnitDataProviderRector (#6772)
  • [TypeDeclaration] Skip void return on callback docblock in AddArrowFunctionReturnTypeRector (#6780)
  • [Php84] Add AddEscapeArgumentRector (#6782)
    (#6790)
  • [dead-code] Add RemoveFilterVarOnExactTypeRector (#6792)
    @carlos-granados!
  • [Php84] Add NewMethodCallWithoutParenthesesRector (#6802)
  • [CodingStyle] Add FunctionLikeToFirstClassCallableRector (#6667), Thanks @peterfox!
  • [Rector Rule] Replace date, strtotime, and time calls with Carbon equivalents (#6749), Thanks @gollumeo!

Bugfixes 🐛

  • Fix AddReturnArrayDocblockBasedOnArrayMapRector (#6800), Thanks @carlos-granados!
  • Fix AddParamTypeBasedOnPHPUnitDataProviderRector (#6799), Thanks
  • [dx] Log rules registered in both withRules() and sets, keeping them once to avoid duplication (#6761)
  • Fix method name in StaticCallToMethodCallRector (#6789), Thanks @parth391!
  • Fix MultiDirnameRector (#6796), Thanks @carlos-granados!
  • Fix ConsecutiveNullCompareReturnsToNullCoalesceQueueRector (#6797), Thanks @carlos-granados!
  • Fix WrapReturnRector (#6798), Thanks @carlos-granados!
  • Fix ArgumentDefaultValueReplacer (#6795), Thanks @carlos-granados!
  • Fix ParamTypeByMethodCallTypeRector (#6803), Thanks @carlos-granados!
  • Fix nested alias unused import (#6807), Thanks @Myks92!
  • [CodeQuality] Improve SimplifyIfElseToTernaryRector to handle binary operations on the left (#6810)
  • Update AnonymousFunctionFactory to disallow superglobal variables in use statements (#6811), Thanks @bryannielsen!

Removed & Deprecations 🗑️

  • [deprecation] Add explicit warning to deprecated withPhpPolyfill() method and error on withPhpSets() misuse on PHP 7.4- projects
  • [DeadCode] Skip used-by-property hook on RemoveUnusedPromotedPropertyRector (#6765)
  • [DeadCode] Skip side-effect cases on RemoveDeadLoopRector (#6770)
  • [deprecated] Remove deprecated AbstractScopeAwareRector (#6791)



rectorphp/rector-symfony 🎵

  • [code-quality] Add RequestIsMainRector (#708)
  • [symfony 7.3] Add InvokableCommandRector - kick off (#707)
  • feat: Add Flysystem key support (#705), Thanks @dsdeboer
  • [CodeQuality] Enhance InlineClassRoutePrefixRector to concatenate name annotation/attribute (#704)

rectorphp/rector-doctrine 🟠

  • [BUNDLE-230] Add AddAnnotationToRepositoryRector rule (#375), Thanks @JohJohan
  • [ORM-300] Add CastDoctrineExprToStringRector (#372), Thanks @JohJohan
  • [ORM-213] Add replace method call support (#369), Thanks @JohJohan
  • [deprecated] Remove deprecated MakeEntityDateTimePropertyDateTimeInterfaceRector (#376)

rectorphp/rector-phpunit 🟢

  • [code-quality] Add RemoveDataProviderParamKeysRector (#469)
  • [CodeQuality] Add AddInstanceofAssertForNullableInstanceRector (#466)
  • [deprecated] Remove deprecated AssertCompareToSpecificMethodRector (#468)
  • [deprecated] Deprecate AssertCountWithZeroToAssertEmptyRector for better readability with explicit methods (#467)

Released Rector 2.0.10

03 Mar 17:43
Compare
Choose a tag to compare

New Features 🥳

  • Add GitHub output formatter (#6747), Thanks @neilime!
  • JUnit output format (#6726), Thanks @VitalyArt!
  • [dx] warn about too high level configuration and suggets more efficient set (#6735)

Bugfixes 🐛

  • [PhpParser] Re-add back get value from __DIR__ and __FILE__ on ValueResolver (#6756)
  • [TypeDeclaration] Skip already typed param on AddClosureParamTypeForArrayReduceRector (#6737)
  • [TypeDeclaration] Skip already typed param on AddClosureParamTypeForArrayMapRector (#6738)
  • [Renaming] Handle crash on assign on for loop on RenameFunctionRector (#6730)
  • [CodeQuality] Skip unused static methods in LocallyCalledStaticMethodToNonStaticRector, as should be handled by another rule (#6731)
  • [Carbon] Fix refactor time to carbon to use ->getTimestamp() over ->timestamp (#6733)
  • [TypeDeclaration] Unregister AddClosureParamTypeForArrayMapRector and AddClosureParamTypeForArrayReduceRector due to may read from docblock (#6727)
  • [TypeDeclaration] Handle crash on union intersection on AddClosureParamTypeForArrayReduceRector (#6729)
  • [Privatization] Skip magic method on PrivatizeFinalClassMethodRector (#6734)
  • [Php74] Skip property hook on RestoreDefaultNullToNullableTypePropertyRector (#6736)
  • [Php53] Handle parentheses in else on TernaryToElvisRector (#6740)
  • [Php81] Handle crash Class parent was not found on MyCLabsMethodCallToEnumConstRector (#6741)
  • [CodeQuality] Handle crash division by zero error on ForeachItemsAssignToEmptyArrayToAssignRector (#6743)
  • fix(ValueObject): FileDiff first line number is below as expected (#6746), Thanks @neilime!
  • [naming] Skip variadic params in RenameParamToMatchTypeRector to avoid single naming for multiple types (#6748)
  • Do not try to refresh attributes (#6750), Thanks @lyrixx!
  • [Php74] Skip with @var doc with more specific type on ClosureToArrowFunctionRector (#6753)
  • [Php81] Skip property hook on ReadOnlyPropertyRector (#6758)
  • [code-quality] Skip complex new instance with args assigns in InlineArrayReturnAssignRector (#6762)
  • [CodeQuality] Handle crash first class callable on InlineArrayReturnAssignRector (#6763)
  • [dx] Remove 3 rules registered in both code quality and coding style levels, keep them in coding style level only (#6757)



rectorphp/rector-symfony

  • [Symfony] Add attribute routing with mix other annotation (#703)
  • [code-quality] Add InlineClassRoutePrefixRector (#701)
  • Do not change method if name does not need to change (#700), Thanks @carlos-granados
  • [code-quality] Add attribute support (#702)
  • [SYMFONY 5 & 6] Security add missing param (#699), Thanks @JohJohan



rectorphp/rector-doctrine

  • [code-quality] Add GetRepositoryServiceLocatorToRepositoryServiceInjectionRector (#368)
  • [NodeAnalyzer] Ensure mix annotation and attribute lookup finder on AttrinationFinder::findManyBy* (#367)
  • Add AttrinationFinder::findManyBy() (#366)
  • Orm querybuilder set parameters to collection (#326), Thanks @marcelthole



rectorphp/rector-phpunit

  • add custom message support to AssertEmptyNullableObjectToAssertInstanceofRector (#461)
  • [Attribute] Add CoversTrait support on CoversAnnotationWithValueToAttributeRector (#460)
  • [CodeQuality] Skip union type on AssertCountWithZeroToAssertEmptyRector (#459)

Released Rector 2.0.9

10 Feb 08:14
Compare
Choose a tag to compare

Bugfixes 🐛

  • [Php81] Exclude Doctrine ODM MongoDB Document and EmbeddedDocument from ReadOnlyPropertyRector (#6721), Thanks @mickverm!
  • [PostRector] Handle with FQCN docblock on UnusedImportRemovingPostRector (#6722)
  • Type hint array reduce closure (#6725), Thanks @peterfox!
  • [PHPStan 2.1.3] Add ReflectionAttribute and ReflectionIntersectionType stub for PHPStan 2.1.3 (#6723)

Released Rector 2.0.8

06 Feb 14:10
Compare
Choose a tag to compare

New Features 🥳


Bugfixes 🐛

  • [CodeQuality] Skip with comment inside on SimplifyIfElseToTernaryRector (#6683)
  • [CodeQuality] Skip windows absolute path on AbsolutizeRequireAndIncludePathRector (#6684)
  • [Strict] Handle in assign on BooleanInIfConditionRuleFixerRector (#6685)
  • Replace ambiguous wrapped_with_brackets with existing attribute wrapped_in_parentheses (#6691)
  • [NodeTypeResolver] Clean up wrap in parentheses check ReprintNodeVisitor (#6692)
  • [Php80][TypeDeclaration] Fix crash on ClassPropertyAssignToConstructorPromotionRector + ReturnNeverTypeRector (#6694)
  • CodeClimate output format (#6697), Thanks @VitalyArt!
  • Exclude node modules path (#6702), Thanks @vaishnavyogesh!
  • Fix str_getcsv() escape argument on PHP 8.4 (#6704)
  • [Php74] Handle crash curly based array on trait on CurlyToSquareBracketArrayStringRector (#6706)
  • [Php73] Handle infinite cast on StringifyStrNeedlesRector (#6707)
  • Clean up unused use (#6708)
  • fix: NewlineBeforeNewAssignSetRector variable as same name like property (#6705), Thanks @guideloince!
  • [TypeDeclaration] Skip override trait method on StrictStringParamConcatRector (#6711)
  • [Test] Clean up test on WorkerCommandLineFactoryTest (#6714)
  • [DX] Move isWindows() method from AbstractRectorTestCase to AbstractLazyTestCase (#6715)
  • [Performance] Use exactly equal or append / file path check on RealpathMatcher (#6716)
  • [TypeDeclaration] Allow union with closure type on property on TypedPropertyFromAssignsRector (#6717)
  • [DeadCode] Skip union falsy mixed on trait on RecastingRemovalRector (#6718)
  • Skip hexa chars in EncapsedStringsToSprintfRector (#6719)
  • [CodingStyle] Rename method: containsASCIIChar to containsControlASCIIChar on EncapsedStringsToSprintfRector (#6720)

Released Rector 2.0.7

19 Jan 10:35
Compare
Choose a tag to compare

New Features 🥳


Bugfixes 🐛

  • [type-declaration] Add typed property, if traits do not duplicate the property (#6663)
  • [removing] Add interface support to RemoveInterfaceRector (#6681)
  • fix: add Symfony support as a composer-based option (#6673), Thanks @ayedbelsem!
  • [CodeQuality] Handle on assign on FlipTypeControlToUseExclusiveTypeRector (#6653)
  • [Performance] Early return FullyQualifiedObjectType on FQCN on ObjectTypeSpecifier (#6658)
  • [CodeQuality] Skip indirect return on SimplifyIfReturnBoolRector (#6660)
  • [Php83] Handle concat in first argument on CombineHostPortLdapUriRector (#6661)
  • [TypeDeclaration] Skip unset by trait on TypedPropertyFromStrictConstructorRector (#6664)
  • [Renaming] Skip used by trait as property promotion on RenamePropertyToMatchTypeRector (#6665)
  • [TypeDeclaration] Skip changed by ref from trait on TypedPropertyFromStrictConstructorRector (#6666)
  • [CodeQuality] Handle with assign missing parentheses on ExplicitBoolCompareRector (#6668)
  • use ->ignoreVCSIgnored() on RectorConfigBuilder::withRootFiles() over custom logic (#6669)
  • [BetterPhpDocParser] Check for closing brace in text content (#8977) (#6670), Thanks @andrewnicols!
  • [AutoImport] Handle FQCN with sub namespace (#6672)
  • [BetterPhpDocParser] Use str_contains() for DoctrineAnnotationDecorator (#6671) (#6674), Thanks @andrewnicols!
  • [AutoImport] Handle inner with sub namespace on auto import (#6679)
  • [DeadCode] Skip dynamic name on RemoveParentCallWithoutParentRector (#6659)



rectorphp/rector-symfony 🎵

  • Back to require-dev rector-src:dev-main (#697)
  • Update GetBySymfonyStringToConstructorInjectionRector fixture test to cover rector-srv:tv-readonly-add-ctor (#696)

rectorphp/rector-doctrine 🟠


rectorphp/rector-phpunit 🟢

  • [PHPUnit 10] Register PropertyExistsWithoutAssertRector to phpunit100.php (#443)
  • Added testcase to demonstrate rector#8977 (#440), Thanks @andrewnicols
  • [PHPUnit10] Replace deleted PHPUnit methods (#438), Thanks @66Ton99

Released: Rector 2.0.6

06 Jan 10:48
Compare
Choose a tag to compare

New Features 🥳

  • [dx] Add --only-suffix to filter files by suffixes (#6647)
  • [DeadCode] Add ReplaceBlockToItsStmtsRector (#6641)
  • [DeadCode] Add RemoveUselessAssignFromPropertyPromotionRector (#6643)
  • Add readonly by default on new promoted property (#6650)
  • Use autowired method if exists in adding new dependency (#6652)

Bugfixes 🐛

  • [CodeQuality] Handle crash inside block statement with unreachable statement on OptionalParametersAfterRequiredRector (#6640)
  • [DX] Use Param->isPromoted() over param->flags !== 0 check on promotion property check (#6646)
  • [Php80] Keep numeric string, string "true", "false" as is on StringAnnotationToAttributeMapper (#6610)
  • [PHPStan ^2.1.1] Handle next unreachable statement via UnreachableStatementNode->getNextUnreachableStatements() (#6642)

Removed 💀

  • [Parser] Remove SmartPhpParserFactory and SmartPhpParser (#6651)

Released: Rector 2.0.5

31 Dec 13:15
Compare
Choose a tag to compare

This release support PHP-Parser 5.4.0 and PHPStan 2.1.0

Feature

  • Bump to PHP-Parser ^5.4.0 with use patches fix-patch-php-parser-54 patches (#6637)
  • Bump to PHPStan ^2.1.0 (#6639)
  • [DeadCode] Allow remove useless @ var on typed class constant as well on RemoveUselessVarTagRector (#6633)

Removed 💀

  • Remove unused AssignVariableNameResolverInterface instances (#6631)

Bugfixes 🐛

  • [DX] Warn about ->withPhpSets() called multiple times, to avoid invalid set mix (#6632)
  • [CodeQuality] Skip fopen() or die() on LogicalToBooleanRector on assign (#6635)
  • use vendor-patches main branch that already include php-parser 5.4.0 patch (#6638)

Released Rector 2.0.4

26 Dec 23:19
Compare
Choose a tag to compare

New Features 🥳

  • [PHP 8.0] Add lcfirst annotation to attribute support (#6577)
  • Add multiline comment fixture (#6580)
  • [TypeDeclaration] Add param type to array map closure (#6377), Thanks @peterfox!
  • [deprecation] Add message about deprecated MixedTypeRector rule, Remove deprecated SetListInterface as no longer used (#6590)
  • [Php81][php82] Add AttributeGroupNewLiner to make new line based on token on ReadOnlyPropertyRector and ReadOnlyClassRector (#6618)
  • [Php84] Add rule for RoundingMode enum (#6369), Thanks @jorgsowa!

Bugfixes 🐛

  • [dx] polyfill sets is running out of the box in php sets (#6591)
  • [phpstan] Fix var assumed ignored errors (#6571)
  • [phpstan] fix next ingored errors (#6572)
  • [CodeQuality] Handle crash on property hook on OptionalParametersAfterRequiredRector (#6575)
  • [PHP 8.0] Make AnnotationToAttributeRector return after 1st newline without slash (#6578)
  • [Php80] Fix end slash regex on AttributeValueResolver (#6579)
  • Fix annotation on doctrine one (#6582)
  • [Comments] Move left over clean empty doc handling to DocBlockUpdater (#6584)
  • fix: replace getKey method for name property (#6583), Thanks @carlosvinicius!
  • fix: replace getKey/getValue methods when enum is a variable (#6585), Thanks @carlosvinicius!
  • [Php80] Handle comment multi line on AttributeValueResolver (#6586)
  • [Php80] Use more proper check for doc comment multi lines on AttributeValueResolver (#6587)
  • [Php80] Handle value as argument with keep description as comment on AttributeValueResolver (#6589)
  • withRootFiles now apply rector for dotfiles too (#6592), Thanks @andrew-demb!
  • 📦 Ignore .phpstorm.meta.php because this is not PHP file (#6594), Thanks @andrew-demb!
  • [Php81] Skip reassign on array destruct on ReadOnlyPropertyRector (#6596)
  • [Php80] Handle crash on multi next stmts on ChangeSwitchToMatchRector (#6597)
  • [CodingStyle] Handle crash on pass args on CallUserFuncToMethodCallRector (#6598)
  • [Php81] Skip with next required on NewInInitializerRector (#6599)
  • Move FunctionLike reindex under StmtsAwareInterface on NodeAttributeReIndexer (#6605)
  • [DeadCode] Skip value variable used in throw stmts in catch on UnusedForeachValueToArrayKeysRector (#6607)
  • Revert "[Php80] Keep numeric string as is on StringAnnotationToAttributeMappe…" (#6609)
  • [Php54] Use token base replace on LongArrayToShortArrayRector (#6616)
  • [Performance] Only register WrappedNodeRestoringNodeVisitor() when there is found AlwaysRememberedExpr or Match_ node on processNodes() (#6620)
  • [Fix] Renamed gzwrites (undefined function) to gzwrite (#6622), Thanks @Vqcheslav!
  • [FunctionLike] Skip return by ref with switch on SimplifyUselessVariableRector (#6623)
  • Rollback SimpleCallableNodeTraverser usage on ByRefReturnNodeVisitor (#6624)
  • [TypeDeclaration] Skip assign on while cond on WhileNullableToInstanceofRector (#6628)
  • [TypeDeclaration] Skip assign in if condition on BinaryOpNullableToInstanceofRector (#6629)
  • Clean up ignore phpstan errors (#6630)
  • [DeadCode] Skip @return positive-int|0 on RemoveUselessReturnTagRector (#6576)
  • [DeadCode] Skip key variable used in throw stmts in catch on RemoveUnusedForeachKeyRector (#6606)

Removed 💀

  • Remove TypeNormalizer as type comparison is handled well by PHPStan (#6570)
  • Removed unused method ClassChildAnalyzer-> hasParentClassMethod() (#6595), Thanks @staabm!
  • [Experiment] Remove WrappedNodeRestoringNodeVisitor (#6626)