rector: Doctrine annotations are removed by unknown rector

Subject Details
PHP version PHP 7.3.9-1+ubuntu18.04.1+deb.sury.org+1 (cli) (built: Sep 2 2019 12:54:24) ( NTS )
Full Command vendor/bin/rector --ansi --dry-run --debug process src/Entity/Content/Content/ContentPosition.php

Current Behaviour

Rector is currently removing critical Doctrine annotations with my current configuration. Sometimes, it says that Rector\Rector\Class_\RenameClassRector has been applied (but excluding it doesn’t fix the issue). Sometimes, no rector is stated as having been applied, yet the removal is still done.

It happens on many files in my project, for both @ORM\JoinColumn and @ORM\Order annotations.

I’ve managed to get rid of the issue by disabling the following imports :

    #- { resource: 'vendor/rector/rector/config/set/phpunit/phpunit60.yaml' }
    #- { resource: 'vendor/rector/rector/config/set/phpunit/phpunit80.yaml' }

    #- { resource: 'vendor/rector/rector/config/set/symfony/symfony30.yaml' }
    #- { resource: 'vendor/rector/rector/config/set/symfony/symfony33.yaml' }
    #- { resource: 'vendor/rector/rector/config/set/symfony/symfony40.yaml' }
    #- { resource: 'vendor/rector/rector/config/set/symfony/symfony41.yaml' }
    #- { resource: 'vendor/rector/rector/config/set/symfony/symfony42.yaml' }
    #- { resource: 'vendor/rector/rector/config/set/symfony/symfony43.yaml' }

    #- { resource: 'vendor/rector/rector/config/set/twig/twig112.yaml' }
    #- { resource: 'vendor/rector/rector/config/set/twig/twig140.yaml' }
    #- { resource: 'vendor/rector/rector/config/set/twig/twig20.yaml' }
    #- { resource: 'vendor/rector/rector/config/set/twig/twig240.yaml' }

When I uncomment any one of these, the error will happen again. Hopefully, as you know these config / rectors better than I do, it’s might help you understand where it could come from ?

I guess you’ll agree it’s not a very nice long-term solution…

vendor/bin/rector --ansi --dry-run --debug process src/Entity/Content/Content/ContentPosition.php
Rector v0.5.12
Config file: rector.yaml

[parsing] src/Entity/Content/Content/ContentPosition.php
[refactoring] src/Entity/Content/Content/ContentPosition.php
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Rector\Class_\RenameClassRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Class_\RenameClassRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Class_\RenameClassRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Class_\RenameClassRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Class_\RenameClassRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\CodeQuality\Rector\Class_\CompleteDynamicPropertiesRector
[applying] Rector\CodingStyle\Rector\Class_\AddArrayDefaultToArrayPropertyRector
[applying] Rector\SOLID\Rector\Class_\FinalizeClassesWithoutChildrenRector
[applying] Rector\SOLID\Rector\Class_\MakeUnusedClassesWithChildrenAbstractRector
[applying] Rector\Rector\Class_\RenameClassRector
[applying] Rector\Symfony\Rector\Class_\MakeCommandLazyRector
[applying] Rector\SymfonyCodeQuality\Rector\Class_\EventListenerToEventSubscriberRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Php\Rector\Property\VarToPublicPropertyRector
[applying] Rector\CodingStyle\Rector\ClassConst\SplitGroupedConstantsAndPropertiesRector
[applying] Rector\Rector\Class_\RenameClassRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Php\Rector\Property\VarToPublicPropertyRector
[applying] Rector\CodingStyle\Rector\ClassConst\SplitGroupedConstantsAndPropertiesRector
[applying] Rector\Rector\Class_\RenameClassRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Php\Rector\Property\VarToPublicPropertyRector
[applying] Rector\CodingStyle\Rector\ClassConst\SplitGroupedConstantsAndPropertiesRector
[applying] Rector\Rector\Class_\RenameClassRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Php\Rector\Property\VarToPublicPropertyRector
[applying] Rector\CodingStyle\Rector\ClassConst\SplitGroupedConstantsAndPropertiesRector
[applying] Rector\Rector\Class_\RenameClassRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Php\Rector\Property\VarToPublicPropertyRector
[applying] Rector\CodingStyle\Rector\ClassConst\SplitGroupedConstantsAndPropertiesRector
[applying] Rector\Rector\Class_\RenameClassRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\CodeQuality\Rector\If_\RemoveAlwaysTrueConditionSetInConstructorRector
[applying] Rector\CodingStyle\Rector\ClassMethod\NewlineBeforeNewAssignSetRector
[applying] Rector\Rector\Typehint\ParentTypehintedArgumentRector
[applying] Rector\Rector\Argument\ArgumentRemoverRector
[applying] Rector\Php\Rector\FunctionLike\AddDefaultValueForUndefinedVariableRector
[applying] Rector\Php\Rector\FunctionLike\Php4ConstructorRector
[applying] Rector\Php\Rector\FunctionLike\ExceptionHandlerTypehintRector
[applying] Rector\Symfony\Rector\HttpKernel\GetRequestRector
[applying] Rector\Rector\MethodCall\RenameMethodRector
[applying] Rector\Rector\Class_\RenameClassRector
[applying] Rector\Rector\Argument\ArgumentDefaultValueReplacerRector
[applying] Rector\Rector\Argument\ArgumentAdderRector
[applying] Rector\Rector\ClassMethod\AddReturnTypeDeclarationRector
[applying] Rector\Rector\Visibility\ChangeMethodVisibilityRector
[applying] Rector\Rector\ClassMethod\WrapReturnRector
[applying] Rector\Rector\ClassMethod\AddMethodParentCallRector
[applying] Rector\Sensio\Rector\FrameworkExtraBundle\TemplateAnnotationRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\CodeQuality\Rector\Return_\SimplifyUselessVariableRector
[applying] Rector\Twig\Rector\SimpleFunctionAndFilterRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\CodeQuality\Rector\If_\RemoveAlwaysTrueConditionSetInConstructorRector
[applying] Rector\CodingStyle\Rector\ClassMethod\NewlineBeforeNewAssignSetRector
[applying] Rector\Rector\Typehint\ParentTypehintedArgumentRector
[applying] Rector\Rector\Argument\ArgumentRemoverRector
[applying] Rector\Php\Rector\FunctionLike\AddDefaultValueForUndefinedVariableRector
[applying] Rector\Php\Rector\FunctionLike\Php4ConstructorRector
[applying] Rector\Php\Rector\FunctionLike\ExceptionHandlerTypehintRector
[applying] Rector\Symfony\Rector\HttpKernel\GetRequestRector
[applying] Rector\Rector\MethodCall\RenameMethodRector
[applying] Rector\Rector\Class_\RenameClassRector
[applying] Rector\Rector\Argument\ArgumentDefaultValueReplacerRector
[applying] Rector\Rector\Argument\ArgumentAdderRector
[applying] Rector\Rector\ClassMethod\AddReturnTypeDeclarationRector
[applying] Rector\Rector\Visibility\ChangeMethodVisibilityRector
[applying] Rector\Rector\ClassMethod\WrapReturnRector
[applying] Rector\Rector\ClassMethod\AddMethodParentCallRector
[applying] Rector\Sensio\Rector\FrameworkExtraBundle\TemplateAnnotationRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Class_\RenameClassRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\CodeQuality\Rector\Return_\SimplifyUselessVariableRector
[applying] Rector\Twig\Rector\SimpleFunctionAndFilterRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\CodeQuality\Rector\If_\RemoveAlwaysTrueConditionSetInConstructorRector
[applying] Rector\CodingStyle\Rector\ClassMethod\NewlineBeforeNewAssignSetRector
[applying] Rector\Rector\Typehint\ParentTypehintedArgumentRector
[applying] Rector\Rector\Argument\ArgumentRemoverRector
[applying] Rector\Php\Rector\FunctionLike\AddDefaultValueForUndefinedVariableRector
[applying] Rector\Php\Rector\FunctionLike\Php4ConstructorRector
[applying] Rector\Php\Rector\FunctionLike\ExceptionHandlerTypehintRector
[applying] Rector\Symfony\Rector\HttpKernel\GetRequestRector
[applying] Rector\Rector\MethodCall\RenameMethodRector
[applying] Rector\Rector\Class_\RenameClassRector
[applying] Rector\Rector\Argument\ArgumentDefaultValueReplacerRector
[applying] Rector\Rector\Argument\ArgumentAdderRector
[applying] Rector\Rector\ClassMethod\AddReturnTypeDeclarationRector
[applying] Rector\Rector\Visibility\ChangeMethodVisibilityRector
[applying] Rector\Rector\ClassMethod\WrapReturnRector
[applying] Rector\Rector\ClassMethod\AddMethodParentCallRector
[applying] Rector\Sensio\Rector\FrameworkExtraBundle\TemplateAnnotationRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Class_\RenameClassRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Class_\RenameClassRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Rector\Class_\RenameClassRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\CodeQuality\Rector\Assign\CombinedAssignRector
[applying] Rector\CodingStyle\Rector\Assign\SplitDoubleAssignRector
[applying] Rector\CodingStyle\Rector\String_\ManualJsonStringToJsonEncodeArrayRector
[applying] Rector\MysqlToMysqli\Rector\Assign\MysqlAssignToMysqliRector
[applying] Rector\Php\Rector\List_\ListSplitStringRector
[applying] Rector\Php\Rector\List_\ListSwapArrayOrderRector
[applying] Rector\Php\Rector\Assign\AssignArrayToStringRector
[applying] Rector\Php\Rector\Each\ListEachRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\CodeQuality\Rector\Return_\SimplifyUselessVariableRector
[applying] Rector\Twig\Rector\SimpleFunctionAndFilterRector
[applying] Rector\CodeQuality\Rector\If_\RemoveAlwaysTrueConditionSetInConstructorRector
[applying] Rector\CodingStyle\Rector\ClassMethod\NewlineBeforeNewAssignSetRector
[applying] Rector\Rector\Typehint\ParentTypehintedArgumentRector
[applying] Rector\Rector\Argument\ArgumentRemoverRector
[applying] Rector\Php\Rector\FunctionLike\AddDefaultValueForUndefinedVariableRector
[applying] Rector\Php\Rector\FunctionLike\Php4ConstructorRector
[applying] Rector\Php\Rector\FunctionLike\ExceptionHandlerTypehintRector
[applying] Rector\Symfony\Rector\HttpKernel\GetRequestRector
[applying] Rector\Rector\MethodCall\RenameMethodRector
[applying] Rector\Rector\Class_\RenameClassRector
[applying] Rector\Rector\Argument\ArgumentDefaultValueReplacerRector
[applying] Rector\Rector\Argument\ArgumentAdderRector
[applying] Rector\Rector\ClassMethod\AddReturnTypeDeclarationRector
[applying] Rector\Rector\Visibility\ChangeMethodVisibilityRector
[applying] Rector\Rector\ClassMethod\WrapReturnRector
[applying] Rector\Rector\ClassMethod\AddMethodParentCallRector
[applying] Rector\Sensio\Rector\FrameworkExtraBundle\TemplateAnnotationRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Class_\RenameClassRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\CodeQuality\Rector\Return_\SimplifyUselessVariableRector
[applying] Rector\Twig\Rector\SimpleFunctionAndFilterRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\CodeQuality\Rector\If_\RemoveAlwaysTrueConditionSetInConstructorRector
[applying] Rector\CodingStyle\Rector\ClassMethod\NewlineBeforeNewAssignSetRector
[applying] Rector\Rector\Typehint\ParentTypehintedArgumentRector
[applying] Rector\Rector\Argument\ArgumentRemoverRector
[applying] Rector\Php\Rector\FunctionLike\AddDefaultValueForUndefinedVariableRector
[applying] Rector\Php\Rector\FunctionLike\Php4ConstructorRector
[applying] Rector\Php\Rector\FunctionLike\ExceptionHandlerTypehintRector
[applying] Rector\Symfony\Rector\HttpKernel\GetRequestRector
[applying] Rector\Rector\MethodCall\RenameMethodRector
[applying] Rector\Rector\Class_\RenameClassRector
[applying] Rector\Rector\Argument\ArgumentDefaultValueReplacerRector
[applying] Rector\Rector\Argument\ArgumentAdderRector
[applying] Rector\Rector\ClassMethod\AddReturnTypeDeclarationRector
[applying] Rector\Rector\Visibility\ChangeMethodVisibilityRector
[applying] Rector\Rector\ClassMethod\WrapReturnRector
[applying] Rector\Rector\ClassMethod\AddMethodParentCallRector
[applying] Rector\Sensio\Rector\FrameworkExtraBundle\TemplateAnnotationRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Class_\RenameClassRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Class_\RenameClassRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Rector\Class_\RenameClassRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\CodeQuality\Rector\Assign\CombinedAssignRector
[applying] Rector\CodingStyle\Rector\Assign\SplitDoubleAssignRector
[applying] Rector\CodingStyle\Rector\String_\ManualJsonStringToJsonEncodeArrayRector
[applying] Rector\MysqlToMysqli\Rector\Assign\MysqlAssignToMysqliRector
[applying] Rector\Php\Rector\List_\ListSplitStringRector
[applying] Rector\Php\Rector\List_\ListSwapArrayOrderRector
[applying] Rector\Php\Rector\Assign\AssignArrayToStringRector
[applying] Rector\Php\Rector\Each\ListEachRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\CodeQuality\Rector\Return_\SimplifyUselessVariableRector
[applying] Rector\Twig\Rector\SimpleFunctionAndFilterRector
[applying] Rector\CodeQuality\Rector\If_\RemoveAlwaysTrueConditionSetInConstructorRector
[applying] Rector\CodingStyle\Rector\ClassMethod\NewlineBeforeNewAssignSetRector
[applying] Rector\Rector\Typehint\ParentTypehintedArgumentRector
[applying] Rector\Rector\Argument\ArgumentRemoverRector
[applying] Rector\Php\Rector\FunctionLike\AddDefaultValueForUndefinedVariableRector
[applying] Rector\Php\Rector\FunctionLike\Php4ConstructorRector
[applying] Rector\Php\Rector\FunctionLike\ExceptionHandlerTypehintRector
[applying] Rector\Symfony\Rector\HttpKernel\GetRequestRector
[applying] Rector\Rector\MethodCall\RenameMethodRector
[applying] Rector\Rector\Class_\RenameClassRector
[applying] Rector\Rector\Argument\ArgumentDefaultValueReplacerRector
[applying] Rector\Rector\Argument\ArgumentAdderRector
[applying] Rector\Rector\ClassMethod\AddReturnTypeDeclarationRector
[applying] Rector\Rector\Visibility\ChangeMethodVisibilityRector
[applying] Rector\Rector\ClassMethod\WrapReturnRector
[applying] Rector\Rector\ClassMethod\AddMethodParentCallRector
[applying] Rector\Sensio\Rector\FrameworkExtraBundle\TemplateAnnotationRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Class_\RenameClassRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\CodeQuality\Rector\Return_\SimplifyUselessVariableRector
[applying] Rector\Twig\Rector\SimpleFunctionAndFilterRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\CodeQuality\Rector\If_\RemoveAlwaysTrueConditionSetInConstructorRector
[applying] Rector\CodingStyle\Rector\ClassMethod\NewlineBeforeNewAssignSetRector
[applying] Rector\Rector\Typehint\ParentTypehintedArgumentRector
[applying] Rector\Rector\Argument\ArgumentRemoverRector
[applying] Rector\Php\Rector\FunctionLike\AddDefaultValueForUndefinedVariableRector
[applying] Rector\Php\Rector\FunctionLike\Php4ConstructorRector
[applying] Rector\Php\Rector\FunctionLike\ExceptionHandlerTypehintRector
[applying] Rector\Symfony\Rector\HttpKernel\GetRequestRector
[applying] Rector\Rector\MethodCall\RenameMethodRector
[applying] Rector\Rector\Class_\RenameClassRector
[applying] Rector\Rector\Argument\ArgumentDefaultValueReplacerRector
[applying] Rector\Rector\Argument\ArgumentAdderRector
[applying] Rector\Rector\ClassMethod\AddReturnTypeDeclarationRector
[applying] Rector\Rector\Visibility\ChangeMethodVisibilityRector
[applying] Rector\Rector\ClassMethod\WrapReturnRector
[applying] Rector\Rector\ClassMethod\AddMethodParentCallRector
[applying] Rector\Sensio\Rector\FrameworkExtraBundle\TemplateAnnotationRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Class_\RenameClassRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Class_\RenameClassRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Rector\Class_\RenameClassRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\CodeQuality\Rector\Assign\CombinedAssignRector
[applying] Rector\CodingStyle\Rector\Assign\SplitDoubleAssignRector
[applying] Rector\CodingStyle\Rector\String_\ManualJsonStringToJsonEncodeArrayRector
[applying] Rector\MysqlToMysqli\Rector\Assign\MysqlAssignToMysqliRector
[applying] Rector\Php\Rector\List_\ListSplitStringRector
[applying] Rector\Php\Rector\List_\ListSwapArrayOrderRector
[applying] Rector\Php\Rector\Assign\AssignArrayToStringRector
[applying] Rector\Php\Rector\Each\ListEachRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\CodeQuality\Rector\Return_\SimplifyUselessVariableRector
[applying] Rector\Twig\Rector\SimpleFunctionAndFilterRector
[applying] Rector\CodeQuality\Rector\If_\RemoveAlwaysTrueConditionSetInConstructorRector
[applying] Rector\CodingStyle\Rector\ClassMethod\NewlineBeforeNewAssignSetRector
[applying] Rector\Rector\Typehint\ParentTypehintedArgumentRector
[applying] Rector\Rector\Argument\ArgumentRemoverRector
[applying] Rector\Php\Rector\FunctionLike\AddDefaultValueForUndefinedVariableRector
[applying] Rector\Php\Rector\FunctionLike\Php4ConstructorRector
[applying] Rector\Php\Rector\FunctionLike\ExceptionHandlerTypehintRector
[applying] Rector\Symfony\Rector\HttpKernel\GetRequestRector
[applying] Rector\Rector\MethodCall\RenameMethodRector
[applying] Rector\Rector\Class_\RenameClassRector
[applying] Rector\Rector\Argument\ArgumentDefaultValueReplacerRector
[applying] Rector\Rector\Argument\ArgumentAdderRector
[applying] Rector\Rector\ClassMethod\AddReturnTypeDeclarationRector
[applying] Rector\Rector\Visibility\ChangeMethodVisibilityRector
[applying] Rector\Rector\ClassMethod\WrapReturnRector
[applying] Rector\Rector\ClassMethod\AddMethodParentCallRector
[applying] Rector\Sensio\Rector\FrameworkExtraBundle\TemplateAnnotationRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\CodeQuality\Rector\Return_\SimplifyUselessVariableRector
[applying] Rector\Twig\Rector\SimpleFunctionAndFilterRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\CodeQuality\Rector\If_\RemoveAlwaysTrueConditionSetInConstructorRector
[applying] Rector\CodingStyle\Rector\ClassMethod\NewlineBeforeNewAssignSetRector
[applying] Rector\Rector\Typehint\ParentTypehintedArgumentRector
[applying] Rector\Rector\Argument\ArgumentRemoverRector
[applying] Rector\Php\Rector\FunctionLike\AddDefaultValueForUndefinedVariableRector
[applying] Rector\Php\Rector\FunctionLike\Php4ConstructorRector
[applying] Rector\Php\Rector\FunctionLike\ExceptionHandlerTypehintRector
[applying] Rector\Symfony\Rector\HttpKernel\GetRequestRector
[applying] Rector\Rector\MethodCall\RenameMethodRector
[applying] Rector\Rector\Class_\RenameClassRector
[applying] Rector\Rector\Argument\ArgumentDefaultValueReplacerRector
[applying] Rector\Rector\Argument\ArgumentAdderRector
[applying] Rector\Rector\ClassMethod\AddReturnTypeDeclarationRector
[applying] Rector\Rector\Visibility\ChangeMethodVisibilityRector
[applying] Rector\Rector\ClassMethod\WrapReturnRector
[applying] Rector\Rector\ClassMethod\AddMethodParentCallRector
[applying] Rector\Sensio\Rector\FrameworkExtraBundle\TemplateAnnotationRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Class_\RenameClassRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Rector\Class_\RenameClassRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\CodeQuality\Rector\Assign\CombinedAssignRector
[applying] Rector\CodingStyle\Rector\Assign\SplitDoubleAssignRector
[applying] Rector\CodingStyle\Rector\String_\ManualJsonStringToJsonEncodeArrayRector
[applying] Rector\MysqlToMysqli\Rector\Assign\MysqlAssignToMysqliRector
[applying] Rector\Php\Rector\List_\ListSplitStringRector
[applying] Rector\Php\Rector\List_\ListSwapArrayOrderRector
[applying] Rector\Php\Rector\Assign\AssignArrayToStringRector
[applying] Rector\Php\Rector\Each\ListEachRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\CodeQuality\Rector\Return_\SimplifyUselessVariableRector
[applying] Rector\Twig\Rector\SimpleFunctionAndFilterRector
[printing] src/Entity/Content/Content/ContentPosition.php


1 file with changes
===================

1) src/Entity/Content/Content/ContentPosition.php

    ---------- begin diff ----------
--- Original
+++ New
@@ -49,7 +49,6 @@
      *      inversedBy="childPositions",
      *      cascade={"persist"}
      * )
-     * @ORM\JoinColumn(name="parent_id", referencedColumnName="id", onDelete="CASCADE", nullable=true)
      */
     private $parent;
    ----------- end diff -----------

Applied rectors:

 * Rector\Rector\Class_\RenameClassRector


                                                                                                                        
 [OK] Rector is done! 1 changed files                                                                                   
                                                                                                                        

Minimal PHP Code Causing Issue

Here’s the PHP file src/Entity/Content/Content/ContentPosition.php :

<?php

declare(strict_types=1);

namespace App\Entity\Content\Content;

use App\Entity\Content\Content;
use App\Entity\Content\Descriptor\Control;
use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Table(
 *   name="Content_Position",
 *   indexes={ @ORM\Index(name="IDX_CONTENT_POSITION", columns={"position"}) }
 * )
 * @ORM\Entity()
 */
class ContentPosition
{
    /**
     * @var int
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var Control
     *
     * @ORM\ManyToOne(targetEntity="App\Entity\Content\Descriptor\Control", inversedBy="positions")
     * @ORM\JoinColumn(name="control_id", referencedColumnName="id", onDelete="CASCADE")
     */
    private $control;

    /**
     * @var Content
     *
     * @ORM\ManyToOne(targetEntity="App\Entity\Content\Content", inversedBy="positions", cascade={"persist"})
     * @ORM\JoinColumn(name="content_id", referencedColumnName="id", onDelete="CASCADE")
     */
    private $content;

    /**
     * @var Content
     *
     * @ORM\ManyToOne(targetEntity="App\Entity\Content\Content",
     *      inversedBy="childPositions",
     *      cascade={"persist"}
     * )
     * @ORM\JoinColumn(name="parent_id", referencedColumnName="id", onDelete="CASCADE", nullable=true)
     */
    private $parent;

    /**
     * @var int
     *
     * @ORM\Column(name="position", type="integer", nullable=false)
     */
    private $position = 0;

    public function getId(): ?int
    {
        return $this->id;
    }

    public function getControl(): ?Control
    {
        return $this->control;
    }

    public function setControl(?Control $control): self
    {
        $this->control = $control;

        return $this;
    }

    public function getParent(): ?Content
    {
        return $this->parent;
    }

    public function setParent(?Content $parent): self
    {
        $this->parent = $parent;

        return $this;
    }

    public function getContent(): ?Content
    {
        return $this->content;
    }

    public function setContent(?Content $content): self
    {
        $this->content = $content;

        return $this;
    }

    public function getPosition(): ?int
    {
        return $this->position;
    }

    public function setPosition(?int $position): self
    {
        $this->position = $position;

        return $this;
    }
}

Here’s my configuration file :

imports:
    # Code quality
    - { resource: 'vendor/rector/rector/config/set/celebrity/celebrity.yaml' }
    - { resource: 'vendor/rector/rector/config/set/code-quality/code-quality.yaml' }
    - { resource: 'vendor/rector/rector/config/set/coding-style/coding-style.yaml' }
    - { resource: 'vendor/rector/rector/config/set/solid/solid.yaml' }

    # This currently has some bugs and is very risky to run, see https://github.com/rectorphp/rector/issues/1630
    # - { resource: 'vendor/rector/rector/config/set/dead-code/dead-code.yaml' }

    # Doctrine
    - { resource: 'vendor/rector/rector/config/set/doctrine/doctrine25.yaml' }

    # PHP
    - { resource: 'vendor/rector/rector/config/set/php/php52.yaml' }
    - { resource: 'vendor/rector/rector/config/set/php/php53.yaml' }
    - { resource: 'vendor/rector/rector/config/set/php/php54.yaml' }
    - { resource: 'vendor/rector/rector/config/set/php/php55.yaml' }
    - { resource: 'vendor/rector/rector/config/set/php/php56.yaml' }
    - { resource: 'vendor/rector/rector/config/set/php/php70.yaml' }
    - { resource: 'vendor/rector/rector/config/set/php/php71.yaml' }
    - { resource: 'vendor/rector/rector/config/set/php/php72.yaml' }
    - { resource: 'vendor/rector/rector/config/set/php/php73.yaml' }

    # PHPUnit
    - { resource: 'vendor/rector/rector/config/set/phpunit/phpunit60.yaml' }
    - { resource: 'vendor/rector/rector/config/set/phpunit/phpunit70.yaml' }
    - { resource: 'vendor/rector/rector/config/set/phpunit/phpunit80.yaml' }
    - { resource: 'vendor/rector/rector/config/set/phpunit/phpunit-code-quality.yaml' }
    - { resource: 'vendor/rector/rector/config/set/phpunit/phpunit-exception.yaml' }
    - { resource: 'vendor/rector/rector/config/set/phpunit/phpunit-mock.yaml' }
    - { resource: 'vendor/rector/rector/config/set/phpunit/phpunit-specific-method.yaml' }
    - { resource: 'vendor/rector/rector/config/set/phpunit/phpunit-yield-data-provider.yaml' }

    # Symfony
    - { resource: 'vendor/rector/rector/config/set/symfony/symfony26.yaml' }
    - { resource: 'vendor/rector/rector/config/set/symfony/symfony28.yaml' }
    - { resource: 'vendor/rector/rector/config/set/symfony/symfony30.yaml' }
    - { resource: 'vendor/rector/rector/config/set/symfony/symfony31.yaml' }
    - { resource: 'vendor/rector/rector/config/set/symfony/symfony32.yaml' }
    - { resource: 'vendor/rector/rector/config/set/symfony/symfony33.yaml' }
    - { resource: 'vendor/rector/rector/config/set/symfony/symfony34.yaml' }
    - { resource: 'vendor/rector/rector/config/set/symfony/symfony40.yaml' }
    - { resource: 'vendor/rector/rector/config/set/symfony/symfony41.yaml' }
    - { resource: 'vendor/rector/rector/config/set/symfony/symfony42.yaml' }
    - { resource: 'vendor/rector/rector/config/set/symfony/symfony43.yaml' }
    - { resource: 'vendor/rector/rector/config/set/symfony/symfony-code-quality.yaml' }
    - { resource: 'vendor/rector/rector/config/set/symfony/symfony-constructor-injection.yaml' }

    # FrameworkBundle
    - { resource: 'vendor/rector/rector/config/set/sensio/framework-extra-bundle-30.yaml' }
    - { resource: 'vendor/rector/rector/config/set/sensio/framework-extra-bundle-50.yaml' }

    # Twig
    - { resource: 'vendor/rector/rector/config/set/twig/twig112.yaml' }
    - { resource: 'vendor/rector/rector/config/set/twig/twig127.yaml' }
    - { resource: 'vendor/rector/rector/config/set/twig/twig134.yaml' }
    - { resource: 'vendor/rector/rector/config/set/twig/twig140.yaml' }
    - { resource: 'vendor/rector/rector/config/set/twig/twig20.yaml' }
    - { resource: 'vendor/rector/rector/config/set/twig/twig240.yaml' }

parameters:
    kernel_class: \Tests\App\AppKernel
    autoload_paths:
        - 'vendor/bin/.phpunit/phpunit-8.1/vendor/autoload.php'
    exclude_paths:
        # Unit tests fail with the following error : Could not process "*.php" file, due to:
        # "Rector\NodeTypeResolver\PerNodeTypeResolver\NameTypeResolver::resolveFullyQualifiedName() on line 51".
        # That's not the end of the world, so let's skip it.
        - 'tests/Unit/*'

        # These two fail with the following error : Could not process "*.php" file, due to :
        # - Class "App\Entity\Content\Descriptor\Control\ValueControl" for property "translatable" was not found.
        # - Class "App\Entity\Timestampable" for property "createdAt" was not found.
        # Would be nice to fix them, but as there's quite a lot of magic around Translatable/Timestampable, maybe we can't.
        - 'src/Entity/Content/Descriptor/Control/ValueControl.php'
        - 'src/Entity/Timestampable.php'
    exclude_rectors:
        # Prefer single quotes everywhere (with some escapes) than a mix (and people start using double quotes)
        - 'Rector\CodingStyle\Rector\String_\SymplifyQuoteEscapeRector'

        # This one tends to do changes that are hard to review, so let's skip it
        - 'Rector\SOLID\Rector\ClassConst\PrivatizeLocalClassConstantRector'

        # This one adds imports for root namespace classes, see https://github.com/rectorphp/rector/issues/1911
        - 'Rector\CodingStyle\Rector\Namespace_\ImportFullyQualifiedNamesRector'

        # This one currently has some bugs, see https://github.com/rectorphp/rector/issues/1632
        - 'Rector\Php\Rector\FuncCall\StringifyStrNeedlesRector'

        # This currently has some bugs, see https://github.com/rectorphp/rector/issues/1116#issuecomment-508771594
        - 'Rector\CodingStyle\Rector\Use_\RemoveUnusedAliasRector'

Expected Behaviour

The Doctrine annotation should not be removed.

About this issue

  • Original URL
  • State: closed
  • Created 5 years ago
  • Comments: 19 (19 by maintainers)

Commits related to this issue

Most upvoted comments

Here’s with --debug on 0.5.11 :

vendor/bin/rector --ansi process --dry-run --debug tests/Unit/BusinessLogic/Media/Format/FormatSearchTest.php 
Rector v0.5.11
Config file: rector.yaml

[parsing] tests/Unit/BusinessLogic/Media/Format/FormatSearchTest.php
[refactoring] tests/Unit/BusinessLogic/Media/Format/FormatSearchTest.php
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Rector\Class_\RenameClassRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Rector\Class_\RenameClassRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Rector\Class_\RenameClassRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Rector\Class_\RenameClassRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Rector\Class_\RenameClassRector
[applying] Rector\CodeQuality\Rector\Class_\CompleteDynamicPropertiesRector
[applying] Rector\CodingStyle\Rector\Class_\AddArrayDefaultToArrayPropertyRector
[applying] Rector\SOLID\Rector\Class_\FinalizeClassesWithoutChildrenRector
[applying] Rector\SOLID\Rector\Class_\MakeUnusedClassesWithChildrenAbstractRector
[applying] Rector\Rector\Class_\RenameClassRector
[applying] Rector\Symfony\Rector\Class_\MakeCommandLazyRector
[applying] Rector\SymfonyCodeQuality\Rector\Class_\EventListenerToEventSubscriberRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Rector\Class_\RenameClassRector
[applying] Rector\CodeQuality\Rector\If_\RemoveAlwaysTrueConditionSetInConstructorRector
[applying] Rector\CodingStyle\Rector\ClassMethod\NewlineBeforeNewAssignSetRector
[applying] Rector\Rector\Typehint\ParentTypehintedArgumentRector
[applying] Rector\Rector\Argument\ArgumentRemoverRector
[applying] Rector\Php\Rector\FunctionLike\AddDefaultValueForUndefinedVariableRector
[applying] Rector\Php\Rector\FunctionLike\Php4ConstructorRector
[applying] Rector\Php\Rector\FunctionLike\ExceptionHandlerTypehintRector
[applying] Rector\PHPUnit\Rector\ExceptionAnnotationRector
[applying] Rector\Rector\MethodCall\RenameMethodRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Rector\Annotation\RenameAnnotationRector
[applying] Rector\Rector\Class_\RenameClassRector
[applying] Rector\Rector\ClassMethod\AddReturnTypeDeclarationRector
[applying] Rector\CodingStyle\Rector\ClassMethod\ReturnArrayClassMethodToYieldRector
[applying] Rector\Symfony\Rector\HttpKernel\GetRequestRector
[applying] Rector\Rector\Argument\ArgumentDefaultValueReplacerRector
[applying] Rector\Rector\Argument\ArgumentAdderRector
[applying] Rector\Rector\Visibility\ChangeMethodVisibilityRector
[applying] Rector\Rector\ClassMethod\WrapReturnRector
[applying] Rector\Rector\ClassMethod\AddMethodParentCallRector
[applying] Rector\Sensio\Rector\FrameworkExtraBundle\TemplateAnnotationRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Rector\Class_\RenameClassRector
[applying] Rector\CodeQuality\Rector\Assign\CombinedAssignRector
[applying] Rector\CodingStyle\Rector\Assign\SplitDoubleAssignRector
[applying] Rector\CodingStyle\Rector\String_\ManualJsonStringToJsonEncodeArrayRector
[applying] Rector\MysqlToMysqli\Rector\Assign\MysqlAssignToMysqliRector
[applying] Rector\Php\Rector\List_\ListSplitStringRector
[applying] Rector\Php\Rector\List_\ListSwapArrayOrderRector
[applying] Rector\Php\Rector\Assign\AssignArrayToStringRector
[applying] Rector\Php\Rector\Each\ListEachRector
[applying] Rector\Rector\New_\NewToStaticCallRector
[applying] Rector\Symfony\Rector\New_\StringToArrayArgumentProcessRector
[applying] Rector\Symfony\Rector\New_\RootNodeTreeBuilderRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Rector\Class_\RenameClassRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Rector\Class_\RenameClassRector
[applying] Rector\CodeQuality\Rector\Assign\CombinedAssignRector
[applying] Rector\CodingStyle\Rector\Assign\SplitDoubleAssignRector
[applying] Rector\CodingStyle\Rector\String_\ManualJsonStringToJsonEncodeArrayRector
[applying] Rector\MysqlToMysqli\Rector\Assign\MysqlAssignToMysqliRector
[applying] Rector\Php\Rector\List_\ListSplitStringRector
[applying] Rector\Php\Rector\List_\ListSwapArrayOrderRector
[applying] Rector\Php\Rector\Assign\AssignArrayToStringRector
[applying] Rector\Php\Rector\Each\ListEachRector
[applying] Rector\Php\Rector\FuncCall\RemoveExtraParametersRector
[applying] Rector\Rector\Argument\ArgumentRemoverRector
[applying] Rector\Php\Rector\MethodCall\ThisCallOnStaticMethodToStaticCallRector
[applying] Rector\PHPUnit\Rector\DelegateExceptionArgumentsRector
[applying] Rector\Rector\MethodCall\RenameMethodRector
[applying] Rector\PHPUnit\Rector\GetMockRector
[applying] Rector\PHPUnit\Rector\MethodCall\SpecificAssertContainsRector
[applying] Rector\PHPUnit\Rector\MethodCall\SpecificAssertInternalTypeRector
[applying] Rector\PHPUnit\Rector\MethodCall\AssertEqualsParameterToSpecificMethodsTypeRector
[applying] Rector\PHPUnit\Rector\MethodCall\ReplaceAssertArraySubsetRector
[applying] Rector\PHPUnit\Rector\MethodCall\RemoveExpectAnyFromMockRector
[applying] Rector\PHPUnit\Rector\MethodCall\UseSpecificWillMethodRector
[applying] Rector\PHPUnit\Rector\SpecificMethod\AssertNotOperatorRector
[applying] Rector\PHPUnit\Rector\SpecificMethod\AssertComparisonToSpecificMethodRector
[applying] Rector\PHPUnit\Rector\SpecificMethod\AssertTrueFalseToSpecificMethodRector
[applying] Rector\PHPUnit\Rector\SpecificMethod\AssertSameBoolNullToSpecificMethodRector
[applying] Rector\PHPUnit\Rector\SpecificMethod\AssertFalseStrposToContainsRector
[applying] Rector\PHPUnit\Rector\SpecificMethod\AssertTrueFalseInternalTypeToSpecificMethodRector
[applying] Rector\PHPUnit\Rector\SpecificMethod\AssertCompareToSpecificMethodRector
[applying] Rector\PHPUnit\Rector\SpecificMethod\AssertIssetToSpecificMethodRector
[applying] Rector\PHPUnit\Rector\SpecificMethod\AssertInstanceOfComparisonRector
[applying] Rector\PHPUnit\Rector\SpecificMethod\AssertPropertyExistsRector
[applying] Rector\PHPUnit\Rector\SpecificMethod\AssertRegExpRector
[applying] Rector\Symfony\Rector\Controller\RedirectToRouteRector
[applying] Rector\Symfony\Rector\Controller\AddFlashRector
[applying] Rector\Symfony\Rector\HttpKernel\GetRequestRector
[applying] Rector\Symfony\Rector\Form\OptionNameRector
[applying] Rector\Symfony\Rector\MethodCall\ReadOnlyOptionToAttributeRector
[applying] Rector\Symfony\Rector\MethodCall\CascadeValidationFormBuilderRector
[applying] Rector\Symfony\Rector\MethodCall\FormTypeInstanceToClassConstRector
[applying] Rector\Rector\Argument\ArgumentDefaultValueReplacerRector
[applying] Rector\Rector\Argument\ArgumentAdderRector
[applying] Rector\Symfony\Rector\Form\FormIsValidRector
[applying] Rector\Symfony\Rector\Form\StringFormTypeToClassRector
[applying] Rector\Symfony\Rector\VarDumper\VarDumperTestTraitMethodArgsRector
[applying] Rector\Symfony\Rector\DependencyInjection\ContainerBuilderCompileEnvArgumentRector
[applying] Rector\Symfony\Rector\Process\ProcessBuilderGetProcessRector
[applying] Rector\Symfony\Rector\FrameworkBundle\ContainerGetToConstructorInjectionRector
[applying] Rector\Symfony\Rector\New_\StringToArrayArgumentProcessRector
[applying] Rector\Symfony\Rector\MethodCall\SimplifyWebTestCaseAssertionsRector
[applying] Rector\Symfony\Rector\MethodCall\MakeDispatchFirstArgumentEventRector
[applying] Rector\Symfony\Rector\BinaryOp\ResponseStatusCodeRector
[applying] Rector\Symfony\Rector\FrameworkBundle\GetParameterToConstructorInjectionRector
[applying] Rector\Symfony\Rector\FrameworkBundle\GetToConstructorInjectionRector
[applying] Rector\Php\Rector\Name\ReservedObjectRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector
[applying] Rector\Rector\Class_\RenameClassRector
[applying] Rector\Php\Rector\FuncCall\RemoveExtraParametersRector
[applying] Rector\Rector\Argument\ArgumentRemoverRector
[applying] Rector\Php\Rector\MethodCall\ThisCallOnStaticMethodToStaticCallRector
[applying] Rector\Php\Rector\FuncCall\RegexDashEscapeRector

In NameTypeResolver.php line 51:
                                               
  [Rector\Exception\ShouldNotHappenException]  
                                               

Exception trace:
  at vendor/rector/rector/packages/NodeTypeResolver/src/PerNodeTypeResolver/NameTypeResolver.php:51
 Rector\NodeTypeResolver\PerNodeTypeResolver\NameTypeResolver->resolveFullyQualifiedName() at vendor/rector/rector/packages/NodeTypeResolver/src/PerNodeTypeResolver/NameTypeResolver.php:37
 Rector\NodeTypeResolver\PerNodeTypeResolver\NameTypeResolver->resolve() at vendor/rector/rector/packages/NodeTypeResolver/src/NodeTypeResolver.php:423
 Rector\NodeTypeResolver\NodeTypeResolver->resolveFirstTypes() at vendor/rector/rector/packages/NodeTypeResolver/src/NodeTypeResolver.php:174
 Rector\NodeTypeResolver\NodeTypeResolver->resolve() at vendor/rector/rector/packages/NodeTypeResolver/src/NodeTypeResolver.php:460
 Rector\NodeTypeResolver\NodeTypeResolver->resolveStaticCall() at vendor/rector/rector/packages/NodeTypeResolver/src/NodeTypeResolver.php:163
 Rector\NodeTypeResolver\NodeTypeResolver->resolve() at vendor/rector/rector/packages/NodeTypeResolver/src/NodeTypeResolver.php:150
 Rector\NodeTypeResolver\NodeTypeResolver->getTypes() at vendor/rector/rector/packages/NodeTypeResolver/src/NodeTypeResolver.php:124
 Rector\NodeTypeResolver\NodeTypeResolver->isType() at vendor/rector/rector/src/Php/Regex/RegexPatternArgumentManipulator.php:129
 Rector\Php\Regex\RegexPatternArgumentManipulator->processStaticCall() at vendor/rector/rector/src/Php/Regex/RegexPatternArgumentManipulator.php:97
 Rector\Php\Regex\RegexPatternArgumentManipulator->matchCallArgumentWithRegexPattern() at vendor/rector/rector/packages/Php/src/Rector/FuncCall/RegexDashEscapeRector.php:73
 Rector\Php\Rector\FuncCall\RegexDashEscapeRector->refactor() at vendor/rector/rector/src/Rector/AbstractRector.php:88
 Rector\Rector\AbstractRector->enterNode() at vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:123
 PhpParser\NodeTraverser->traverseNode() at vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:223
 PhpParser\NodeTraverser->traverseArray() at vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:114
 PhpParser\NodeTraverser->traverseNode() at vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:223
 PhpParser\NodeTraverser->traverseArray() at vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:114
 PhpParser\NodeTraverser->traverseNode() at vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:223
 PhpParser\NodeTraverser->traverseArray() at vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:114
 PhpParser\NodeTraverser->traverseNode() at vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:223
 PhpParser\NodeTraverser->traverseArray() at vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:91
 PhpParser\NodeTraverser->traverse() at vendor/rector/rector/src/PhpParser/NodeTraverser/RectorNodeTraverser.php:52
 Rector\PhpParser\NodeTraverser\RectorNodeTraverser->traverse() at vendor/rector/rector/src/Application/FileProcessor.php:114
 Rector\Application\FileProcessor->refactor() at vendor/rector/rector/src/Application/RectorApplication.php:141
 Rector\Application\RectorApplication->Rector\Application\{closure}() at vendor/rector/rector/src/Application/RectorApplication.php:173
 Rector\Application\RectorApplication->tryCatchWrapper() at vendor/rector/rector/src/Application/RectorApplication.php:142
 Rector\Application\RectorApplication->runOnFileInfos() at vendor/rector/rector/src/Console/Command/ProcessCommand.php:149
 Rector\Console\Command\ProcessCommand->execute() at vendor/symfony/console/Command/Command.php:255
 Symfony\Component\Console\Command\Command->run() at vendor/rector/rector/src/Console/Command/AbstractCommand.php:32
 Rector\Console\Command\AbstractCommand->run() at vendor/symfony/console/Application.php:933
 Symfony\Component\Console\Application->doRunCommand() at vendor/symfony/console/Application.php:272
 Symfony\Component\Console\Application->doRun() at vendor/rector/rector/src/Console/Application.php:92
 Rector\Console\Application->doRun() at vendor/symfony/console/Application.php:148
 Symfony\Component\Console\Application->run() at vendor/rector/rector/bin/rector:24

process [-n|--dry-run] [-a|--autoload-file AUTOLOAD-FILE] [-e|--hide-autoload-errors] [-r|--rule RULE] [-o|--output-format [OUTPUT-FORMAT]] [-h|--help] [-v|vv|vvv|--verbose] [-V|--version] [--ansi] [--no-ansi] [-c|--config CONFIG] [-s|--set SET] [-l|--level LEVEL] [--debug] [-d|--working-dir WORKING-DIR] [--] <command> <source>...

And the file is :

<?php

declare(strict_types=1);

namespace Tests\Unit\BusinessLogic\Media\Format;

use App\BusinessLogic\Media\Format\FormatSearch;
use App\BusinessLogic\Media\Format\SystemFormats;
use PHPUnit\Framework\TestCase;

class FormatSearchTest extends TestCase
{
    public function testDefaultSettings(): void
    {
        $formatSearch = new FormatSearch();
        $includedSystemFormats = $formatSearch->getIncludedSystemFormats();

        $this->assertTrue($formatSearch->includesDatabaseFormats());
        $this->assertFalse($formatSearch->includesSystemFormat(SystemFormats::ORIGINAL));
        $this->assertTrue($formatSearch->includesSystemFormat(SystemFormats::BASE));
        $this->assertTrue($formatSearch->includesSystemFormat(SystemFormats::THUMBNAIL));
        $this->assertNotContainsEquals(SystemFormats::ORIGINAL, $includedSystemFormats);
        $this->assertContainsEquals(SystemFormats::BASE, $includedSystemFormats);
        $this->assertContainsEquals(SystemFormats::THUMBNAIL, $includedSystemFormats);
        $this->assertEmpty($formatSearch->getSlugs());
    }

    public function testIncludeNothing(): void
    {
        $formatSearch = (new FormatSearch())
            ->includeDatabaseFormats(false)
            ->includeSystemFormats(false);

        $this->assertFalse($formatSearch->includesDatabaseFormats());
        $this->assertFalse($formatSearch->includesSystemFormats());
    }

    public function testIncludeOriginalFormat(): void
    {
        // Here we test that both syntax work
        $formatSearch = (new FormatSearch())
            ->includeSystemFormats(SystemFormats::ORIGINAL)
            ->includeSystemFormat(SystemFormats::ORIGINAL);

        $this->assertTrue($formatSearch->includesSystemFormat(SystemFormats::ORIGINAL));
        $this->assertTrue($formatSearch->includesSystemFormat(SystemFormats::BASE));
        $this->assertTrue($formatSearch->includesSystemFormat(SystemFormats::THUMBNAIL));
    }

    public function testIncludeOnlyOriginalFormat(): void
    {
        $formatSearch = (new FormatSearch())
            ->includeDatabaseFormats(false)
            ->includeSystemFormats(false)
            ->includeSystemFormat(SystemFormats::ORIGINAL);

        $this->assertFalse($formatSearch->includesDatabaseFormats());
        $this->assertTrue($formatSearch->includesSystemFormat(SystemFormats::ORIGINAL));
        $this->assertFalse($formatSearch->includesSystemFormat(SystemFormats::BASE));
        $this->assertFalse($formatSearch->includesSystemFormat(SystemFormats::THUMBNAIL));
    }

    public function testExcludeSystemFormats(): void
    {
        $formatSearch = (new FormatSearch())
            ->includeSystemFormats(false);

        $this->assertFalse($formatSearch->includesSystemFormat(SystemFormats::ORIGINAL));
        $this->assertFalse($formatSearch->includesSystemFormat(SystemFormats::BASE));
        $this->assertFalse($formatSearch->includesSystemFormat(SystemFormats::THUMBNAIL));
    }

    public function testAddingExtraFormat(): void
    {
        $formatSearch = (new FormatSearch())
            ->includeSystemFormat('custom_format');

        $this->assertTrue($formatSearch->includesSystemFormat('custom_format'));
    }

    public function testMessingAround(): void
    {
        $formatSearch = (new FormatSearch())
            ->includeDatabaseFormats(false)
            ->includeSystemFormats(false)
            ->includeSystemFormat(SystemFormats::ORIGINAL);

        $this->assertFalse($formatSearch->includesDatabaseFormats());
        $this->assertTrue($formatSearch->includesSystemFormat(SystemFormats::ORIGINAL));
        $this->assertFalse($formatSearch->includesSystemFormat(SystemFormats::BASE));
        $this->assertFalse($formatSearch->includesSystemFormat(SystemFormats::THUMBNAIL));

        $formatSearch
            ->includeDatabaseFormats();

        $this->assertTrue($formatSearch->includesDatabaseFormats());
        $this->assertTrue($formatSearch->includesSystemFormat(SystemFormats::ORIGINAL));
        $this->assertFalse($formatSearch->includesSystemFormat(SystemFormats::BASE));
        $this->assertFalse($formatSearch->includesSystemFormat(SystemFormats::THUMBNAIL));

        $formatSearch
            ->includeSystemFormats([SystemFormats::ORIGINAL => false, SystemFormats::THUMBNAIL => true]);

        $this->assertTrue($formatSearch->includesDatabaseFormats());
        $this->assertFalse($formatSearch->includesSystemFormat(SystemFormats::ORIGINAL));
        $this->assertFalse($formatSearch->includesSystemFormat(SystemFormats::BASE));
        $this->assertTrue($formatSearch->includesSystemFormat(SystemFormats::THUMBNAIL));

        $formatSearch
            ->includeSystemFormat('custom');

        $this->assertTrue($formatSearch->includesDatabaseFormats());
        $this->assertFalse($formatSearch->includesSystemFormat(SystemFormats::ORIGINAL));
        $this->assertFalse($formatSearch->includesSystemFormat(SystemFormats::BASE));
        $this->assertTrue($formatSearch->includesSystemFormat(SystemFormats::THUMBNAIL));
        $this->assertTrue($formatSearch->includesSystemFormat('custom'));
    }
}

Works! Now, I have 3 other “type of errors” (meaning I get many of these) running on our entire code base on dev-master. Here’s an example of each :

 [ERROR] Could not process                                                      
         "src/Entity/Administration/Favorite.php" file, due to:                                        
         "Argument 1 passed to                                                  
         Rector\DoctrinePhpDocParser\Ast\PhpDoc\Class_\AbstractIndexTagValueNode
         ::__construct() must be of the type string, null given, called in      
         vendor/rector/rector/pa
         ckages/DoctrinePhpDocParser/src/PhpDocParser/TableTagValueNodeFactory.p
         hp on line 121".                                                       
                                                                             
 [ERROR] Could not process                                                      
         "src/DataFixtures/Tests/FixtureFileTrait.php" file by                                         
         "Rector\CodingStyle\Rector\ClassMethod\MakeInheritedMethodVisibilitySam
         eAsParentRector", due to:                                              
         "Look at                                                               
         "Rector\CodingStyle\Rector\ClassMethod\MakeInheritedMethodVisibilitySam
         eAsParentRector::refactor()" on line 75".                              
                                                   
 [ERROR] Could not process                                                      
         "src/Entity/Content/Content/ContentStatus.php" file, due to:                                  
         "Notice: Undefined offset: 0".      

Should I open issues for each ? (they are not here on v0.5.11) I can try and share “anonymized” code for the 3 examples if you need it. Let me know.

As a side question : what’s the current “release process” for Rector ? Should I fix the version to “0.5.11” and only upgrade to the next one when I know I’ll have time to investigate/debug these kind of issues ? (I’d guess you’re not really using semver here, right?)