Releases: rectorphp/rector
Releases · rectorphp/rector
Released Rector 2.0.13
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
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
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
, andtime
calls withCarbon
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 onwithPhpSets()
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
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__
onValueResolver
(#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
Released Rector 2.0.9
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
New Features 🥳
- feat: add coding style levels (#6695), Thanks @carlos-granados!
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
New Features 🥳
- Add
withSetProviders
method (#6515), Thanks @ghostwriter! - feature: replace MyCLabs Enum constructor call (#6588), Thanks @carlosvinicius!
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 🟠
- [ORM-300] add missing rename class (#365), Thanks @JohJohan
- [ORM-28] add missing sets list for ORM-28 (#364), Thanks @JohJohan
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
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
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 🐛
Released Rector 2.0.4
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)