Skip to content

Releases: rectorphp/rector

Released Rector 0.19.3

29 Jan 19:55
Compare
Choose a tag to compare

New Features ahd Changes 🥳

  • [Config] Add RectorConfigBuilder (#5503)
  • Add gitlab to "setup-ci" command (#5497)
  • Add "custom-rule" command to make creating rules easy (#5498)
  • [Windows] Rework add windows support on tests CI (#5504)
  • make literal separator optional, as rather coding style and not always desired (#5505)

Bugfixes 🐛

  • [Php70] Skip inside Encapsed on ThisCallOnStaticMethodToStaticCallRector (#5481)
  • [Performance] Cache PHP version features on reading composer.json on PhpVersionProvider (#5484)
  • Fix phpstan (#5489)
  • [Config] Restore default values for RectorConfig->parallel() config similar to original <=0.18.x version (#5472)
  • [Performance][PhpParser] Deprecate InlineCodeParser::parse(), extract into parseFile() and parseString() (#5482)
  • [CodeQuality] Skip surplus open square bracket on SimplifyRegexPatternRector (#5494)
  • [AutoImport] Skip start with <?= short open tag on auto import (#5496)
  • [Testing] Deprecate FileInfoParser, use existing TestingParser instead (#5501)
  • custom copy path fix (#5502)
  • [DX] Allow Arg in value resolver, as often used and intuitive (#5512)
  • [Windows] Support replace \r\n on DocBlockInliner (#5513)
  • [Php83] add string type to concat constant (#5516), Thanks @jdohuutin!

Removed 💀

  • [Renaming] Remove namespace renames in ClassRename, as it should only rename references, not move to new namespace (#5487)
  • [Renaming] Remove rename class name (#5488)

Released Rector 0.19.2

19 Jan 11:29
Compare
Choose a tag to compare

New features and Changes 🎉

  • [DX] Depreate heavy and conflicting Symfony/Twig/PHPUnit level sets (#5477)
  • Remove collectors, as performance very costly and not practically useful (#5470)

Bugfixes 🐛

  • Fix repeated timeouts on CI - #8403, #8396
  • Bump PHPStan to 1.10.56 (#5471)
  • Remove collector interface and fix SpatieEnumClassToEnumRector already has underscore to double underscore (#5473)
  • [DX] Depreate heavy and conflicting Symfony/Twig/PHPUnit level sets (#5477)

Removed 💀

  • [Performance] Remove unused AttributeKey::ARGUMENT_POSITION (#5469)
  • [Autoload] Remove src/core_namespace_aliases.php (#5476)

Released Rector 0.19.0

09 Jan 00:58
Compare
Choose a tag to compare

In this release we merged 2 directories into /src to speed up class loading and make work with code easier. This leads to BC change in namespace for your custom rules:

-use Rector\Core\
+use Rector\

That's it!

New Features 🥳

  • [psr-4] Move /packages directory to /src under single Rector\ namespace (#5414)
  • [Arguments] Allow no default value on ArgumentAdderRector (#5382)
  • Add related polyfill interface to other PHP 8.0/7.3 rules (#5389)
  • [CodingStyle] Add RemoveUselessAliasInUseStatementRector (#5394)
  • [Php83] Add CombineHostPortLdapUriRector (#5397)
  • [TypeDeclaration] optionally only add types for hard coded return values in ReturnTypeFromStrictScalarReturnExprRector (#5364), Thanks @RobertMe!
  • Add phpstan native cond types for getName() for nodes that always return a string (#5413)
  • [Strict] Add StaticProperty supporton may be unitialized static property on DisallowedEmptyRuleFixerRector (#5428)
  • [Php83] Add implements interface support on AddOverrideAttributeToOverriddenMethodsRector (#5429)
  • [cs] Make use of new ECS config (#5445)

Bugfixes 🐛

  • [TypeDeclaration] Add false and true in union support on ReturnUnionTypeRector (#5355)
  • Skip classes without final and exception as possibly invoke child implement in AddVoidReturnTypeWhereNoReturnRector (#5381)
  • Skip non-final class method with no content in AddVoidReturnTypeWhereNoReturnRector (#5386)
  • [TypeDeclaration] Allow add void return type on magic __invoke() method on AddVoidReturnTypeWhereNoReturnRector (#5376)
  • Add ReturnTypeFromStrictBoolReturnExprRector support for if/else returns (#5384)
  • Skip void without final keyword in ReturnNeverTypeRector as could be implemented with more precise children (#5379)
  • Fix StrictArrayParamDimFetchRector for string access (#5383)
  • Fix variable to property fetch update in ClassPropertyAssignToConstructorPromotionRector (#5385)
  • [Php] Fix filter cache on PolyfillPackagesProvider (#5390)
  • [Parallel] Fix missing --xdebug in WorkerCommand line on WorkerCommandLineFactory when --xdebug provided (#5398)
  • Bump phpstan to 1.10.50 (#5399)
  • [Php83] Handle dynamic host and port values on CombineHostPortLdapUriRector (#5401)
  • [config] Extract RectorConfigValidator and handle config validation there (#5404)
  • [psr-4] Update Rector core test reference (#5410)
  • [cleanup] Decouple changelog generator (#5412)
  • [Strict] Handle may be unitialized property on DisallowedEmptyRuleFixerRector (#5409)
  • Bump min. version to PHP 8.2 - readonly classes (#5415)
  • Decouple LongAndDependentComplexRectorRule to cognitive-complexity package (#5427)
  • [TypeDeclaration] Skip with empty() check on StrictArrayParamDimFetchRector (#5432)
  • [TypeDeclaration] Allow both integer and string index array on StrictArrayParamDimFetchRector (#5433)
  • [TypeDeclaration] Skip re-assign with call and use as arg on StrictArrayParamDimFetchRector (#5434)
  • [CodeQuality] Handle crash with call inside loop on SimplifyForeachToCoalescingRector (#5436)
  • [TypeDeclaration] Handle with default null on ParamTypeByMethodCallTypeRector (#5437)
  • [NodeTypeResolver] Handle crash PHPStan\File\CouldNotReadFileException: Could not read file on IntermediateSourceLocator (#5438)
  • Allows to convert Spatie enum names to snake upper case (#5435), Thanks @JoolsMcFly!
  • fix: RenameMethodRector should handle NullsafeMethodCall (#5444), Thanks @nikophil!
  • [Php80][CodeQuality] Handle crash on ChangeSwitchToMatchRector + TernaryFalseExpressionToIfRector on under if else (#5446)
  • Skip cond with side effect in RemoveDeadConditionAboveReturnRector (#5424)
  • [DeadCode] Skip nullable array on RemoveUnusedNonEmptyArrayBeforeForeachRector (#5375)
  • Keep called method in RemoveEmptyClassMethodRector (#5425)

Removed 💀

  • [DeadCode] Remove RemoveJustPropertyFetchForAssignRector as tailored for single case of private project, not practical for generic use (#5418)
  • remove array spread from coding style, as often part of personal preference (rectorphp/rector-src@a326b85)

Released Rector 0.18.13

20 Dec 16:24
Compare
Choose a tag to compare

New Features 🥳

  • [DeadCode] Add Function_ support on RemoveUselessReturnTagRector (#5325)
  • [TypeDeclaration] Add MergeDateTimePropertyTypeDeclarationRector (#5327)
  • [DeadCode] Add Function_ support on RemoveUselessParamTagRector (#5331)
  • [DeadCode] Add RemoveNullTagValueNodeRector (#5352)

Bugfixes 🐛

  • [Php83] Fix const from applying incorrect types (#5326), Thanks @peterfox!
  • [TypeDeclaration] Fix missing change type to DateTimeInterface on MergeDateTimePropertyTypeDeclarationRector (#5329)
  • [TypeDeclaration] Handle DateTimeInterface from use statement on MergeDateTimePropertyTypeDeclarationRector (#5330)
  • [TypeDeclaration] Handle assign $this on TypedPropertyFromAssignsRector (#5333)
  • Fix array type if property is used in TypedPropertyFromStrictConstructorRector (#5339)
  • [Naming] Skip DateTimeImmutable on RenamePropertyToMatchTypeRector (#5340)
  • [PHP 7.4] Skip typed properties in the set, as standalone set now available (#5342)
  • [TypeDeclaration] Skip has child return different type on ReturnNeverTypeRector (#5343)
  • [Experiment][TypeDeclaration] Allow change abstract class methods with body on ReturnType*Rector (#5344)
  • [Php55] Make StringClassNameToClassConstantRector configurable to keep first pre-backslash string configurable (#5354)
  • [TypeDeclaration] Skip casted to (array) on StrictArrayParamDimFetchRector (#5356)
  • [TypeDeclaration] Return new static from different object on ReturnTypeFromStrictTypedCallRector (#5357)
  • [TypeDeclaration] Allow return static from under function on ReturnTypeFromStrictTypedCallRector (#5358)
  • [Naming] Skip $this in RenameForeachValueVariableToMatchExprVariableRector (#5360), Thanks @sreichel!
  • [Transform] Do not create a new node if the existing node is already the correct one on AttributeKeyToClassConstFetchRector (#5328), Thanks @SerethiX!
  • Bump to php parser 4.18 (#5362)
  • [CodeQuality] Skip Superglobals variable on SimplifyEmptyCheckOnEmptyArrayRector (#5369)
  • [Php55] Handle crash after exit() on GetCalledClassToSelfClassRector (#5372)
  • [CodeQuality] Skip method call on else on TernaryFalseExpressionToIfRector (#5373)
  • Remove return type in case of never in RemoveUselessReturnTagRector (#5323), Thanks @staabm!
  • [DeadCode] Remove unused @return mixed on RemoveUselessReturnTagRector (#5332)
  • [DeadCode] Skip has parent class with __call() magic method on RemoveParentCallWithoutParentRector (#5336)
  • [PHP 5.5] Remove extra preslash in class reference, as in practice removal manually (#5338)
  • [DeadCode] Remove null as never used param type in RemoveUselessParamTagRector (#5348)
  • Remove json throw on error rule from PHP 7.3 set, as changed behavior and must be applied on purpose (#5349)
  • [Testing] Remove unnecessary set Parameter Source on TestingParser (#5371)

Released Rector 0.18.12

04 Dec 09:49
Compare
Choose a tag to compare

New Features 🥳

  • [CodeQuality] Add RemoveUselessIsObjectCheckRector (#5316)
  • [PHP83] Implements a rule to add types to class constants (#5290), Thanks @peterfox!

Bugfixes 🐛

  • [TypeDeclaration] Skip iterable already there in AddReturnTypeDeclarationFromYieldsRector (#5291)
  • [TypeDeclaration] Remove ParamTypeFromStrictTypedPropertyRector as seems similar feature with AddParamTypeFromPropertyTypeRector (#5293)
  • [CodingStyle] Remove AddArrayDefaultToArrayPropertyRector as based on docblock types and public contract, better use type declaration set instad (#5298)
  • [TypeDeclaration] Skip return void in abstract empty class in AddVoidReturnTypeWhereNoReturnRector (#5311)
  • [Php80] Skip PDO::query() on AddParamBasedOnParentClassMethodRector (#5313)
  • [TypeDeclaration] Add If else assign support on TypedPropertyFromAssignsRector (#5314)
  • [CodeQuality] Make CommonNotEqualRector skip if not <> (#5292)
  • [Naming] Skip singularize "cms" on RenameForeachValueVariableToMatchExprVariableRector (#5294)
  • [TypeDeclaration][Performance] Check typed param already early on ParamTypeByMethodCallTypeRector (#5295)
  • [Strict] Fix DisallowedEmptyRuleFixerRector empty() allow string '0' check (#5296)
  • [EarlyReturn] Skip duplicating complex expression in ChangeAndIfToEarlyReturnRector (#5301)
  • [Scoped] Exclude symfony/console/Debug/CliRequest.php from parallel-lint PHP 7.2 syntax check (#5304)
  • Skip RenameMethodRector in never (#5305), Thanks @staabm!
  • [CodeQuality] Skip with else on SimplifyForeachToCoalescingRector (#5307)
  • [Doc] Typo fix on sample code documentation on SimplifyForeachToCoalescingRector (#5308)
  • [Privatization] Skip call non-private method on non-final class on PrivatizeLocalGetterToPropertyRector (#5309)
  • [Privatization] Fix first class callable in PrivatizeLocalGetterToPropertyRector (#5310)
  • [TypeDeclaration] Keep constant false return type from strict native call (#5223), Thanks @tomi85!
  • [PHP 7.0] Skip mt_rand() replacement as not valuable (#5315)
  • [Strict] Allow check '0' empty zero on BooleanInTernaryOperatorRuleFixerRector on string type (#5297)
  • Fix annotation to attribute parsing string (#5317)
  • [Instanceof] Fix combination of dead instance and compare (#5319)
  • Remove isPositiveInteger() check for third argument to strpos() (#5257), Thanks @ikari7789!
  • Remove return type in case of void in RemoveUselessReturnTagRector (#5318)
  • [DeadCode] Skip @return never with void on RemoveUselessReturnTagRector (#5320)
  • [DeadCode] Remove useless nullable @return doc on RemoveUselessReturnTagRector (#5321)

Released Rector 0.18.11

27 Nov 13:32
Compare
Choose a tag to compare

Bugfixes 🐛

  • [DeadCode] Skip multi no stmts on RemoveDuplicatedCaseInSwitchRector (#5258)
  • [Performance][Renaming] Remove unnecessary array_reverse() on RenameClassRector (#5266)
  • [TypeDeclaration] Skip default not array type on StrictArrayParamDimFetchRector (#5259)
  • [TypeDeclaration] Skip echo-ed on StrictArrayParamDimFetchRector (#5260)
  • [Php71] Skip re-assigned as array on AssignArrayToStringRector (#5261)
  • [Php71] Ensure re-assign after definition on AssignArrayToStringRector (#5262)
  • [Renaming] Handle Rename no namespace to namespaced class with existing use statements (#5264)
  • [Renaming][Performance] Re-structure check namespace only on renamed node got Namespace_ (#5265)
  • [Php81] Skip increment/decrement on ReadOnlyPropertyRector (#5267)
  • [TypeDeclaration] Deprecate TypedPropertyFromStrictGetterMethodReturnTypeRector as depends on missing context and creates invalid code (#5269)
  • [AutoImport] Fixing auto import on multiple @\ usage (#5271)
  • [Performance][Renaming] Use FullyQualified on RenameClassRector (#5272)
  • [AutoImport] Handle complex usage of multiple @\ combined with other doc (#5273)
  • [AutoImport] Handle multi @\ usage on multiline description (#5274)
  • [Php80] Handle FQCN @\ usage on AnnotationToAttributeRector (#5240)
  • [BetterPhpDocParser] Handle nested doctrine annotation with single quote content (#5281)
  • [Privatization] Skip method with parent call (#5283)
  • [BetterPhpDocParser] Use ORIG_NODE attribute on DoctrineAnnotationDecorator on handle @\ after generic (#5285)
  • [Php80] Allow subnamespace from use statements support on AnnotationToAttributeRector (#5287)

Removed 💀

  • Remove deprecated Rector rules (#5270)

Released Rector 0.18.10

17 Nov 15:10
Compare
Choose a tag to compare

Bugfixes 🐛

  • [Renaming] FQN-ize namespaced import no namespace -> namespaced name on RenameClassRector (#5256)

Released Rector 0.18.9

17 Nov 15:08
Compare
Choose a tag to compare

New Features 🥳

  • [DeadCode]: Support functions in RemoveUnusedVariableAssignRector (#5249
  • [Performance][PostRector] Only process FullyQualified on import Node name on NameImportingPostRector (#5255)

Bugfixes 🐛

  • [AutoImport][Php70] Keep FQCN on conflict last name on TernaryToNullCoalescingRector (#5251)
  • [Naming] Fix dotted name on generics bug in RenameVariableToMatchMethodCallReturnTypeRector (#5250)
  • [Php73] Handle crash on JsonThrowOnErrorRector + SensitiveConstantNameRector (#5253)
  • [CodingStyle] Refactor UseImportsAdder to return [FileWithoutNamespace] code on no namespaced code (#5254)

Released Rector 0.18.8

14 Nov 15:34
Compare
Choose a tag to compare

Bugfixes 🐛

  • Bump to reactphp/event-loop ^1.5 (#5246)
  • [AutoImport] Skip auto import on no namespace used class on auto import enabled (#5247)
  • [AutoImport][Renaming] Handle same last name no namespace just renamed auto import (#5248)

Released Rector 0.18.7

13 Nov 10:19
Compare
Choose a tag to compare

New Features 🥳

  • [CodeQuality] Add negated support on SingleInArrayToCompareRector (#5205)
  • [Php83] Adds rule for adding Override attribute (#5170), Thanks @peterfox!

Bugfixes 🐛

  • BinaryOpBetweenNumberAndStringRector don't trust phpdoc (#5199), Thanks @staabm!
  • [CodeQuality][Php70] Handle LocallyCalledStaticMethodToNonStaticRector + ThisCallOnStaticMethodToStaticCallRector must change both method and caller (#5196)
  • CountArrayToEmptyArrayComparisonRector: don't trust phpdoc (#5203), Thanks @staabm!
  • [TypeDeclaration] Skip union false on NumericReturnTypeFromStrictScalarReturnsRector (#5204)
  • [CodeQuality] Handle negated isset on IssetOnPropertyObjectToPropertyExistsRector on property not exists (#5206)
  • [CodeQuality] Handle crash no scope on ThrowWithPreviousExceptionRector+OptionalParametersAfterRequiredRector (#5207)
  • [NodeTypeResolver] Clean up TryCatch_ Scope filling (#5208)
  • [PHPStanStaticTypeMapper] Clean up tweak false and bool check on UnionTypeMapper (#5209)
  • [TypeDeclaration] Skip default numeric string on param int on ParamTypeByMethodCallTypeRector (#5210)
  • [AutoImport] Handle AnnotationToAttributeRector + RenameClassRector then enable auto import (#5213)
  • [Php80] Keep single quoted Argument Attribute on AnnotationToAttributeRector (#5214)
  • [Php80] Keep single quoted key: 'value' on AnnotationToAttributeRector (#5215)
  • [AutoImport] Ensure change to FullyQualified for Attribute on just changed from annotation (#5216)
  • [Php52][Php70] Handle ContinueToBreakInSwitchRector + BreakNotInLoopOrSwitchToReturnRector (#5217)
  • [Php80] Handle RenameClassRector+AnnotationToAttributeRector with auto import and existing attribute defined (#5219)
  • [Testing] In case of failed test using multiple rules, show applied Rector rules to make easy to find them (#5222)
  • [NodeTypeResolver] Handle nullable extended class on ->isObjectType() on DowngradeReflectionGetAttributesRector (#5224)
  • NullableCompareToNullRector: Don't trust phpdocs (#5225), Thanks @staabm!
  • [CodingStyle] Move ArraySpreadInsteadOfArrayMergeRector from php74 to codingstyle sets list (#5230)
  • [PostRector] Ensure old classes in use statements cleaned up after rename attribuet on ClassRenamingPostRector (#5231)
  • RestoreDefaultNullToNullableTypePropertyRector: skip @readonly phpdoc (#5233), Thanks @staabm!
  • [AutoImport] Handle DeclareStrictTypesRector on importNames() enabled on no namespace (#5241)
  • [AutoImport] Allow auto import just renamed @var only docblock on RenameClassRector without removeUnusedImports() enabled (#5220)
  • Remove rule DataProviderArrayItemsNewlinedRector.php (#5227), Thanks @eerison!
  • Remove ArraySpreadInsteadOfArrayMergeRector from LevelSetList::UP_TO_PHP_74 (#5228), Thanks @staabm!
  • [DeadCode] Allow indirect duplicated grouping on RemoveDuplicatedCaseInSwitchRector (#5234)
  • [DeadCode] Reduce double loop on RemoveDuplicatedCaseInSwitchRector (#5235)
  • [DeadCode] Handle different indirect duplicated on RemoveDuplicatedCaseInSwitchRector (#5236)
  • [DeadCode] Ensure change hasChanged flag on RemoveDuplicatedCaseInSwitchRector (#5237)
  • [DeadCode] Handle repetitive jump equal case stmts on RemoveDuplicatedCaseInSwitchRector (#5239)
  • Rename parameter variable to nextCase on RemoveDuplicatedCaseInSwitchRector (#5244)