Skip to content

Releases: rectorphp/rector

Released Rector 0.12.18

20 Mar 23:07
Compare
Choose a tag to compare

New Features 🎉

  • [TypeDeclaration] Add ArrayShapeFromConstantArrayReturnRector (#1908)
  • [Transform] Add type matching to MethodCallToPropertyFetchRector (#1905)
  • [Arguments] Add RemoveMethodCallParamRector (#1906)
  • [CodeQuality] Add InlineConstructorDefaultToPropertyRector (#1935)
  • Add StaticCall support to RemoveMethodCallParamRector (#1916)
  • [DX] simplify --debug output to the proccessed file path (#1933)

Bugfixes 🐛

  • [CodeQuality] Handle default value on CallableThisArrayToAnonymousFunctionRector (#1900), Thanks @samsonasik!
  • [TypeDeclaration] Skip ArrayShapeFromConstantArrayReturnRector on class name as key (#1911), Thanks @samsonasik!
  • [Php81] Skip override __construct from interface on NewInInitializerRector (#1913), Thanks @samsonasik!
  • [Arguments] Handle by pass 2nd argument default value on ArgumentAdderRector (#1946), Thanks @samsonasik!
  • [DeadCode] Handle used in anonymous class on RemoveUnusedConstructorParamRector (#1948), Thanks @samsonasik!
  • [Transform] Handle property exists via Property Promotion on NewToMethodCallRector (#1915), Thanks @samsonasik!
  • [Renaming] Apply rename fully qualified namespace docblock on RenameNamespaceRector (#1917), Thanks @samsonasik!
  • [CodingStyle] Handle Interface suffix on CatchExceptionNameMatchingTypeRector (#1918), Thanks @samsonasik!
  • [CodingStyle] Use alias name when exists on CatchExceptionNameMatchingTypeRector (#1920), Thanks @samsonasik!
  • Fix some minor misprints (#1922), Thanks @bocharsky-bw!
  • [Dep] Add PHPUnit\Framework\TestCase stub on target-repository bootstrap.php (#1924), Thanks @samsonasik!
  • [TypeDeclaration] Fix parent method param override (#1945)
  • [DeadCode][CodingStyle] Handle SplitDoubleAssignRector+RemoveUnusedPrivatePropertyRector (#1944), Thanks @samsonasik!
  • [Php81] Skip static property on ReadOnlyPropertyRector (#1939), Thanks @samsonasik!
  • [PHP 8.0] Fix skip of silent key in annotation to attribute (#1932)

Deprecations ⌛️

  • [MockeryToProphecy] Deprecate micro set as not practical (#1899)
  • [PhpSpecToPHPUnit] Deprecate historical set, mostly for experimental in early days (#1901)
  • Remove old PHPSpec 3 and 4 sets (#1902)
  • [Order] Deprecate rather coding standard related set, use OrderedClassElementsFixer instead (#1910)
  • [Transform] Remove AddInterfaceByParentRector as never used (#1935)
  • [DeadCode] Skip called by current classname on RemoveUnusedPrivateClassConstantRector (#1931), Thanks @samsonasik!

Released Rector 0.12.17

03 Mar 12:26
Compare
Choose a tag to compare

New Features 🎉

  • [DX] Make progress bar less verbose on CI (#1797), #6996
  • Remove min php version from OptionalParametersAfterRequiredRector (#1814), Thanks @leighman!
  • [CodeQuality] Extend SimplifyForeachToArrayFilterRector with compare cond (#1820)
  • Add Projects using Rector section to README.md (#1881), Thanks @Wirone!

Bugfixes 🐛

  • [Php74] Skip mixed type on TypedPropertyRector on auto import enabled (#1798), Thanks @connerbw!
  • [Php74] Handle Multiple types with NullType on TypedPropertyRector when PHP 8.0 Feature enabled (#1803), Thanks @samsonasik!
  • [Php74] Skip null|false type on TypedPropertyRector on php 8.0 feature enabled (#1804), Thanks @samsonasik!
  • [TypeDeclaration] Use @return type on Generator on ReturnTypeDeclarationRector (#1794), Thanks @samsonasik!
  • [Php74] Skip variable FuncCall $fn() on ReservedFnFunctionRector (#1815), Thanks @samsonasik!
  • [TypeDeclaration] Skip @inheritdoc on PropertyTypeDeclaration (#1752), Thanks @oprypkhantc!
  • [Php81] Skip used as ArrayDimFetch on Arg on side effect FuncCall on ReadOnlyPropertyRector (#1822), Thanks @samsonasik!
  • Skip removing Psalm PhpDocTagNode (#1829), Thanks @rajyan!
  • Fix annotation to attribute rector with doctrine table and nested uniqueConstraints option (#1850), Thanks @acrobat!
  • [Php81] Add ConstFetch and ClassConstFetch arg support on NewInInitializerRector (#1848), Thanks @samsonasik!
  • Do not prepend a \ to the type, if it is already Fully Qualified (#1863), Thanks @mkrauser!
  • [Core] Fixing applied rules not shown when refactor() only change docblock (#1861), Thanks @samsonasik!
  • [DowngradePhp72] Handle in assign on DowngradePregUnmatchedAsNullConstantRector (#1872), Thanks @samsonasik!

Changes ⚙️

  • Remove deprecated show command (#1796)
  • [DX] Deprecate disabling of import options to keep configuration simpler (#1817)
  • [DX] Inline PARALLEL_SYSTEM_ERROR_COUNT_LIMIT option to keep user scope outside internal system (#1818)
  • Deprecate RemovingStatic rules as very narrow use case in generic rules (#1819)
  • [DX] Remove GenericClassMethodParamRector, rather PHPStorm one-time refactoring job (#1830)
  • [DX] Remove SingleToManyMethodRector, rather one time job useful for PHPStorm (#1831)
  • [DX] Remove MoveValueObjectsToValueObjectDirectoryRector, should be handled by PHPStorm refactoring and PHPStan rule checks (#1832)
  • [DX] Remove deprecated constants (#1833)
  • [DX] Remove MoveServicesBySuffixToDirectoryRector, better handle by PHPStan + PHPStorm refacor (#1834)
  • [DX] Remove MoveInterfacesToContractNamespaceDirectoryRector as breaky, use PHPStan rule instead (#1835)
  • [DX] Remove MoveEntitiesToEntityDirectoryRector, use PHPStan rule + PhpStorm refactoring instead (#1836)

Released Rector 0.12.16

09 Feb 15:47
Compare
Choose a tag to compare

New Features 🎉

  • [RemoveFinalFromConstRector] (#1732), Thanks @reypm!
  • [DeadCode] Add support for removal readonly property on RemoveUnusedPromotedPropertyRector (#1741), Thanks @samsonasik!
  • [DowngradePhp80] Add DowngradeStringReturnTypeOnToStringRector (#1750), Thanks @samsonasik!
  • [Php74] Add inlinePublic configurable for TypedPropertyRector (#1745), Thanks @samsonasik!
  • [DowngradePhp72] Add DowngradePhp72JsonConstRector (#1765), Thanks @samsonasik!
  • [DowngradePhp73] Add DowngradePhp73JsonConstRector (#1782), Thanks @samsonasik!
  • [DowngradePhp71] Add DowngradePhp71JsonConstRector (#1784), Thanks @samsonasik!

Bugfixes 🐛

  • [Php81] Skip dynamic class on NewInInitializerRector (#1736), Thanks @samsonasik!
  • [Php81] Do not add final modifier on class constant that the class has children on FinalizePublicClassConstantRector (#1739), Thanks @samsonasik!
  • [Php81] Handle non-dynamic + dynamic args (non-array, non-scalar) passed to New_ on NewInInitializerRector (#1737), Thanks @samsonasik!
  • [Php81] Skip override abstract method on NewInInitializerRector (#1740), Thanks @samsonasik!
  • [Renaming] Fix duplicate namespacing on RenameNamespaceRector (#1761), Thanks @samsonasik!
  • [Php80] Fix configure should not remove annotation directly passed bool value (#1761), Thanks @samsonasik!
  • [PHP 8.0] Include keys in annotation to attribute transformation (#1766)
  • [CodeQuality] Skip ExplicitMethodCallOverMagicGetSetRector on method no param + variadic (#1768), Thanks @samsonasik!

Changes ⤵️

  • [DX] Deprecate show command (#1758), use --debug option on main command instead

Released Rector 0.12.15

26 Jan 13:07
Compare
Choose a tag to compare

Bugfixes 🐛

  • [FinalizePublicClassConstantRector] Ignore final classes (#1730), Thanks @reypm!
  • [TypeDeclaration] Skip use return docblock on typed intersection type (#1728), Thanks @samsonasik!
  • [types] Add HasPropertyTypeMapepr and HasMethodTypeMapper (#1731)

Released Rector 0.12.14

25 Jan 19:36
Compare
Choose a tag to compare

New Features 🎉

  • Add --memory-limit option to pass memory limit to parallel subprocesses (#1726)
  • Add option to configure followLinks of finder (#1703), Thanks @sabbelasichon!

Bugfixes 🐛

  • [Php71] Skip iterable on CountOnNullRector (#1691), #6947, Thanks @samsonasik!
  • [Privatization] Skip ChangeReadOnlyVariableWithDefaultValueToConstantRector when local variable never used (#1693), Thanks @samsonasik!
  • Do not run ChangeReadOnlyPropertyWithDefaultValueToConstantRector on properties with attributes (#1694), Thanks @simPod!
  • [Php70] Do not take side effect on IfToSpaceshipRector (#1696), Thanks @samsonasik!
  • [Php71] Skip property fetch array assigned in method call on __construct on CountOnNullRector (#1698), Thanks @samsonasik!
  • [Php56] Skip AddDefaultValueForUndefinedVariableRector on empty() check (#1697), Thanks @samsonasik!
  • [CodingStyle] Handle more than one method contains try catch on CatchExceptionNameMatchingTypeRector (#1706), Thanks @samsonasik!
  • [Php74] Skip curly variable in string quoted on CurlyToSquareBracketArrayStringRector (#1707), Thanks @samsonasik!
  • [Php80] Handle AnnotationToAttributeRector + ClassPropertyAssignToConstructorPromotionRector (#1712), Thanks @samsonasik!
  • [DowngradePhp70][Transform] Add #[\ReturnTypeWillChange] on Downgrade + transform ArrayObject::getIterator() to keep working on php 8.1 (#1711), Thanks @samsonasik!
  • [CodeQuality][EarlyReturn] Handle SimplifyIfElseToTernaryRector + ChangeIfElseValueAssignToEarlyReturnRector (#1710), Thanks @samsonasik!
  • [Php74] Skip readonly on RestoreDefaultNullToNullableTypePropertyRector (#1713), Thanks @samsonasik!
  • [DeadCode] Handle RemoveUnusedConstructorParamRector + RemoveUnusedPrivatePropertyRector (#1714), Thanks @samsonasik!
  • [Naming][Php56] Do not add default value init for renamed variable from param on RenameParamToMatchTypeRector+AddDefaultValueForUndefinedVariableRector (#1716), Thanks @samsonasik!
  • [Php80] Do not remove true pseudo type on UnionTypesRector (#1715), Thanks @samsonasik!
  • [Downgrade 7.0] Strip unnecessary parentheses around expressions (#1617), Thanks @jtojnar!
  • [DeadCode] Allow unused private property on Doctrine and JMS Serializable attribute on RemoveUnusedPrivatePropertyRector (#1718), Thanks @samsonasik!
  • [DowngradePhp72] Add DowngradeJsonDecodeNullAssociativeArgRector (#1723), Thanks @samsonasik!
  • [DowngradePhp72] Fix downgrade json null as true for DowngradeJsonDecodeNullAssociativeArgRector (#1724), Thanks @samsonasik!
  • [TypeDeclaration] Skip Prevent object in intersection type on ReturnTypeDeclarationRector (#1727), Thanks @samsonasik!

Released Rector 0.12.13

25 Jan 19:27
Compare
Choose a tag to compare

New Features 🎉

  • [DowngradePhp80] Add DowngradeNumberFormatNoFourthArgRector (#1649), Thanks @samsonasik!
  • [DowngradePhp80] Use ArgsAnalyzer for has named args check (#1651), Thanks @samsonasik!
  • [Parallel] Increase ParallelFileProcessor::TIMEOUT_IN_SECONDS to 120 (#1657), Thanks @samsonasik!
  • [Php81] Add NullToStrictStringFuncCallArgRector (#1655), Thanks @samsonasik!
  • [Parallel] Add Option PARALLEL_TIMEOUT_IN_SECONDS and PARALLEL_SYSTEM_ERROR_COUNT_LIMIT constant to allow reconfigure it in rector config (#1666), Thanks @simPod!
  • Ensure autoloader is loaded in globally installed Rector (#1683), Thanks @PhilETaylor!

Bugfixes 🐛

  • [Core] BetterStandardPrinter performance improvement with unnecessary regex check on no Closure Uses and no ClassMethod ReturnType (#1617), Thanks @jtojnar!
  • [PhpAttribute] Fix array key of class constant reference (#1659)
  • [DX] Use type safe access with PrivatePropertyAccessor (#1660)
  • Do not remove final modifier from private constructors (#1663), Thanks @simPod!
  • Prevent UnionTypes rule from removing @param static in favor fo self-typed $argument (#1655), Thanks @samsonasik!
  • [Php80] Handle nested attribute with constant on AnnotationAttributeRector (#1661), Thanks @Jean85!
  • [CodeQuality] Do not add \ on static on CallableThisArrayToAnonymousFunctionRector (#1671), Thanks @samsonasik!
  • [Php81] Skip static call in right expr of Coalesce on NewInInitializerRector (#1670), Thanks @samsonasik!
  • Prevent UnionTypes rule from removing literal value scalar types (#1666), Thanks @simPod!
  • [Php74] Mirror comment on Closure return to ArrowFunction expr on ClosureToArrowFunctionRector (#1677), Thanks @samsonasik!
  • [Php70] Handle reverse sorting check on IfToSpaceshipRector (#1676), Thanks @samsonasik!
  • [TypeDeclaration] Skip Throw_ in construct and as Expr on ReturnNeverTypeRector (#1679), Thanks @samsonasik!
  • [DowngradePhp74] Do not remove non-null default value on nullable on DowngradeTypedPropertyRector (#1687), Thanks @samsonasik!
  • [Naming] Fix property interface and underscore naming (#1689)

Released Rector 0.12.12

07 Jan 16:51
Compare
Choose a tag to compare

Bugfixes 🐛

Released Rector 0.12.11

06 Jan 12:40
Compare
Choose a tag to compare

New Features 🎉

  • [Downgrade PHP 7.0] Move Throwable out of type hints (#1602), Thanks @jtojnar!
  • add dump_with_depth helper function (#1639)

Bugfixes 🐛

  • [DeadCode] Add Scope check on RemoveParentCallWithoutParentRector (#1602), #6916, #6915, #6907, #6911, #6903, #6900, Thanks @jtojnar!
  • BinaryOpConditionsCollector: Add tests and fix edge case (#1608), Thanks @jtojnar!
  • Avoid clearing the cache while saving it on parallel (#1616), #6906, Thanks @zingimmick!
  • [Downgrade 7.0] Make catch clauses catching Throwable also catch Exception (#1609), Thanks @jtojnar!
  • [Core] Fix undefined array key 0 on FormatPerservingPrinter (#1619), Thanks @samsonasik!
  • [Downgrade PHP 7.0] Add Exception fallback for instanceof Throwable (#1608), Thanks @jtojnar!
  • [e2e][parallel] Allow set custom config on Parallel (#1620), Thanks @samsonasik!
  • [Parallel] Fix system errors expected an instance of SystemError but got string (#1610), Thanks @zingimmick!
  • [Confi[parallel] Let WorkerRunner know about paths, so PHPStan and Rector can handle static reflection over them guration] Fix provided type does not have to exists (#1624)
  • require always File[] in resolvePhpFilePaths() (#1630)
  • [Parallel] Unsupported files are not skipped (#1638), Thanks @gander!
  • check for iterable type before adding return type (#1639)
  • [Parallel] Let WorkerRunner know about paths, so PHPStan and Rector can handle static reflection over them (#1629)

Released Rector 0.12.10

31 Dec 12:58
Compare
Choose a tag to compare

Thank you all for amazing year 2021!

This year...

  • we've released a book with @matthiasnoback where you can learn Rector in depth in days,
  • we've added static reflection that allows analyzing legacy projects,
  • we develop Rector on PHP 8.1 and release downgraded to PHP 7.1
  • and most importantly, you contribute more and more rules and fixes every month ❤️

Thank you from whole Rector team 🙇


We've prepared one 🎁 , that will make your life much easier in 2022...


Experimental - Parallel Run 🥳️

This release brings new exciting feature. The more threads your CPU has, the faster can Rector get. It's brand new feature, so we look for bleeding edge testers to try it out:

// rector.php
use Rector\Core\Configuration\Option;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;

return static function (ContainerConfigurator $containerConfigurator): void {
    $parameters = $containerConfigurator->parameters();

	$parameters->set(Option::PARALLEL, true);
};
  • [Parallel] Add serializable object passing to FileProcessors (#1583)
  • [Parallel] Tidy up (#1585)
  • [Parallel] Improve tests to use file processor over file analyzer + fix missing RectorWithLineChange de/serialization (#1584)

New Features 🎉

  • [DowngradePhp80] Add #[\ReturnTypeWillChange] on DowngradeMixedTypeDeclarationRector on implements ArrayAccess (#1552), Thanks @samsonasik!
  • [DowngradePhp80] Add DowngradeArrayFilterNullableCallbackRector (#1593), Thanks @samsonasik!
  • [DowngradePhp70] Add DowngradeMethodCallOnCloneRector (#1559), Thanks @samsonasik!
  • [DowngradePhp56] Add DowngradeArrayFilterUseConstantRector (#1573), Thanks @samsonasik!
  • [Downgrade PHP 7.4] Add false to downgraded typed property (#1596)
  • [TypeDeclaration] AddVoidReturnTypeWhereNoReturnRector turns @return never into less specific @return void (#1553), Thanks @staabm!
  • [Transform][Php81] Add configurable ReturnTypeWillChangeRector (#1548), Thanks @samsonasik!
  • [DX] Avoid reporting deprecated errors (#1577)
  • Update to PHPStan ^1.3 (#1589), Thanks @samsonasik!

Bugfixes 🐛

  • [Php81] Skip assign coalesce with new in inner class on NewInInitializerRector (#1547), Thanks @samsonasik!
  • [Php80] Handle optional, required, optional on OptionalParametersAfterRequiredRector (#1555), #6879, Thanks @staabm!
  • [TypeDeclaratoin] Add AccessoryLiteralStringType to static type mapper (#1558)
  • [Php74] Skip protected property on final class with parent not loaded on TypedPropertyRector (#1560), Thanks @samsonasik!
  • [TypedProperty] Add property type guard in case of parent class (#1563)
  • [TypeDeclaration] Fix ParamTypeByParentCallTypeRector union type printing (#1564)
  • [TypeDeclaration] Fix ReturnTypeAlreadyAddedChecker on return key of array (#1571), Thanks @samsonasik!
  • [TypeDeclaration] Skip controller render method on @var to type declaratoin (#1576)
  • [TypeDeclaration] Skip callable on return type of control (#1572)
  • [TypeDeclaration] Add symfony route annotation support (#1578)
  • [PHP 8.1] Skip abstract class in NewInInitializerRector (#1581)
  • [Php81] Skip ReadOnlyPropertyRector on Clone $this (#1599), Thanks @samsonasik!
  • [TypeDeclaration] Include trait in AddVoidReturnTypeWhereNoReturnRector (#1582)
  • Fix faking scope context for trait reflections (#1575), Thanks @zingimmick!
  • [PHPStanStaticTypeMapper] Do not crash on numeric string on ReturnTypeDeclarationRector (#1588), Thanks @samsonasik!
  • fix: add failing test and fix for repeated numeric strings (#1594), Thanks @internalsystemerror!
  • [DeadCode] Fix remove unreachable after mark test skipped (#1602), Thanks @jtojnar!

Released Rector 0.12.9

22 Dec 00:08
Compare
Choose a tag to compare

New Features 🎉

  • [Renaming] Handle Rename before AttributeGroup on RenameClassRector (#1481), Thanks @samsonasik!
  • [DowngradePhp80] Add DowngradeReflectionPropertyGetDefaultValueRector (#1486), Thanks @samsonasik!
  • [PHP 8.0] Add Annotation to ORM entity nested support (#1520)
  • [Doctrine] Remove join columns on both PHP 8 and PHP 8.1 (#1525)
  • [DowngradePhp80] Add DowngradeReflectionClassGetConstantsFilterRector (#1529), Thanks @samsonasik!

Changes ➡️

  • [TypeDeclaration] Improve PropertyTypeDeclarationRector to work with strict types (#1494)
  • [TypedPropertyRector] Remove private property only, to keep other rules work separately (#1496)
  • [TypeDeclaration] Decouple TypedPropertyFromAssignsRector (#1498)
  • [TypeDeclaration] Remove CompleteVarDocTypePropertyRector, is handled by split rules (#1500)
  • [TypeDeclaration] Improve assign/constructor rules (#1499)
  • Move DoctrineColumnPropertyTypeInferer rector-doctrine package (#1506), Thanks @samsonasik!
  • Move DoctrineRelationPropertyTypeInferer to rector-doctrine (#1507)

Bugfixes 🐛

  • [DowngradePhp81] Handle New_ inside array on DowngradeNewInInitializerRector (#1508), Thanks @samsonasik!
  • [PHP 8.1] Fix IntersectionTypesRector for non-object types (#1495)
  • [PHP 8.0] Handle abstract method on StringableForToStringRector (#1483), Thanks @samsonasik!
  • [NodeTypeResolver] Add cast (float), (string), (int) back on ScalarTypeResolver (#1484), Thanks @samsonasik!
  • [NodeTypeResolver] Fix undefined method ReflectionProperty::getDefaultValue() on php 7.x (#1482), Thanks @samsonasik!
  • [Privatization] Skip protected property used in parent class on PrivatizeFinalClassPropertyRector (#1501), Thanks @samsonasik!
  • [DeadCode] Skip parent not found on RemoveParentCallWithoutParentRector (#1510), Thanks @samsonasik!
  • [Php80] Handle Alias is used as Attribute on AnnotationToAttributeRector (#1511), Thanks @samsonasik!
  • [DowngradePhp74] Handle ArrowFunctionToAnonymousFunctionRector inside CallLike + preserve byRef (#1514), Thanks @samsonasik!
  • [Php80] Handle double quoted sql statement annotation on AnnotationToAttributeRector (#1516), Thanks @samsonasik!
  • [CodingStyle] Fix static to dynamic override in static method (#1518)
  • [Php80] Handle case mixed up default in first case+middle case on ChangeSwitchToMatchRector (#1538), Thanks @samsonasik!
  • [DeadCode] Handle parent:: call with assign when no parent on RemoveParentCallWithoutParentRector (#1531), Thanks @samsonasik!
  • [DowngradePhp74][DowngradePhp80] Apply ternary with method_exists on DowngradeReflectionGetTypeRector + DowngradeReflectionGetAttributesRector (#1530), Thanks @samsonasik!