rectorphp / swiss-knife

Swiss knife in pocket of every upgrade architect!
https://getrector.com
MIT License
72 stars 8 forks source link

Attempt to read property "value" on null in MockedClassNameCollectingNodeVisitor.php #13

Closed shakaran closed 4 months ago

shakaran commented 4 months ago
PHP Warning:  Attempt to read property "value" on null in myproject/vendor/rector/swiss-knife/src/PhpParser/NodeVisitor/MockedClassNameCollectingNodeVisitor.php on line 33
PHP Stack trace:
PHP   1. {main}() myproject/vendor/bin/swiss-knife:0
PHP   2. include() myproject/vendor/bin/swiss-knife:119
PHP   3. require() myproject/vendor/rector/swiss-knife/bin/swiss-knife:5
PHP   4. SwissKnife202403\Symfony\Component\Console\Application->run($input = class SwissKnife202403\Symfony\Component\Console\Input\ArgvInput { protected $definition = class SwissKnife202403\Symfony\Component\Console\Input\InputDefinition { private $arguments = [...]; private $requiredCount = 2; private $lastArrayArgument = class SwissKnife202403\Symfony\Component\Console\Input\InputArgument { ... }; private $lastOptionalArgument = NULL; private $options = [...]; private $negations = [...]; private $shortcuts = [...] }; protected $stream = NULL; protected $options = ['skip-mocked' => TRUE]; protected $arguments = ['command' => 'finalize-classes', 'paths' => [...]]; protected $interactive = TRUE; private $tokens = [0 => 'finalize-classes', 1 => 'src', 2 => 'tests', 3 => '--skip-mocked']; private $parsed = [] }, $output = class SwissKnife202403\Symfony\Component\Console\Output\ConsoleOutput { private ${SwissKnife202403\Symfony\Component\Console\Output\Output}verbosity = 32; private ${SwissKnife202403\Symfony\Component\Console\Output\Output}formatter = class SwissKnife202403\Symfony\Component\Console\Formatter\OutputFormatter { private $decorated = TRUE; private $styles = [...]; private $styleStack = class SwissKnife202403\Symfony\Component\Console\Formatter\OutputFormatterStyleStack { ... } }; private ${SwissKnife202403\Symfony\Component\Console\Output\StreamOutput}stream = resource(2) of type (stream); private $stderr = class SwissKnife202403\Symfony\Component\Console\Output\StreamOutput { private ${SwissKnife202403\Symfony\Component\Console\Output\Output}verbosity = 32; private ${SwissKnife202403\Symfony\Component\Console\Output\Output}formatter = class SwissKnife202403\Symfony\Component\Console\Formatter\OutputFormatter { ... }; private $stream = resource(3) of type (stream) }; private $consoleSectionOutputs = [] }) myproject/vendor/rector/swiss-knife/bin/swiss-knife.php:31
PHP   5. SwissKnife202403\Symfony\Component\Console\Application->doRun($input = class SwissKnife202403\Symfony\Component\Console\Input\ArgvInput { protected $definition = class SwissKnife202403\Symfony\Component\Console\Input\InputDefinition { private $arguments = [...]; private $requiredCount = 2; private $lastArrayArgument = class SwissKnife202403\Symfony\Component\Console\Input\InputArgument { ... }; private $lastOptionalArgument = NULL; private $options = [...]; private $negations = [...]; private $shortcuts = [...] }; protected $stream = NULL; protected $options = ['skip-mocked' => TRUE]; protected $arguments = ['command' => 'finalize-classes', 'paths' => [...]]; protected $interactive = TRUE; private $tokens = [0 => 'finalize-classes', 1 => 'src', 2 => 'tests', 3 => '--skip-mocked']; private $parsed = [] }, $output = class SwissKnife202403\Symfony\Component\Console\Output\ConsoleOutput { private ${SwissKnife202403\Symfony\Component\Console\Output\Output}verbosity = 32; private ${SwissKnife202403\Symfony\Component\Console\Output\Output}formatter = class SwissKnife202403\Symfony\Component\Console\Formatter\OutputFormatter { private $decorated = TRUE; private $styles = [...]; private $styleStack = class SwissKnife202403\Symfony\Component\Console\Formatter\OutputFormatterStyleStack { ... } }; private ${SwissKnife202403\Symfony\Component\Console\Output\StreamOutput}stream = resource(2) of type (stream); private $stderr = class SwissKnife202403\Symfony\Component\Console\Output\StreamOutput { private ${SwissKnife202403\Symfony\Component\Console\Output\Output}verbosity = 32; private ${SwissKnife202403\Symfony\Component\Console\Output\Output}formatter = class SwissKnife202403\Symfony\Component\Console\Formatter\OutputFormatter { ... }; private $stream = resource(3) of type (stream) }; private $consoleSectionOutputs = [] }) myproject/vendor/rector/swiss-knife/vendor/symfony/console/Application.php:216
PHP   6. SwissKnife202403\Symfony\Component\Console\Application->doRunCommand($command = class Rector\SwissKnife\Command\FinalizeClassesCommand { private ${SwissKnife202403\Symfony\Component\Console\Command\Command}application = class SwissKnife202403\Symfony\Component\Console\Application { private $commands = [...]; private $wantHelps = FALSE; private $runningCommand = ...; private $name = 'Easy CI toolkit'; private $version = 'UNKNOWN'; private $commandLoader = NULL; private $catchExceptions = TRUE; private $catchErrors = FALSE; private $autoExit = TRUE; private $definition = class SwissKnife202403\Symfony\Component\Console\Input\InputDefinition { ... }; private $helperSet = class SwissKnife202403\Symfony\Component\Console\Helper\HelperSet { ... }; private $dispatcher = NULL; private $terminal = class SwissKnife202403\Symfony\Component\Console\Terminal { ... }; private $defaultCommand = 'list'; private $singleCommand = FALSE; private $initialized = TRUE; private $signalRegistry = class SwissKnife202403\Symfony\Component\Console\SignalRegistry\SignalRegistry { ... }; private $signalsToDispatchEvent = [...] }; private ${SwissKnife202403\Symfony\Component\Console\Command\Command}name = 'finalize-classes'; private ${SwissKnife202403\Symfony\Component\Console\Command\Command}processTitle = NULL; private ${SwissKnife202403\Symfony\Component\Console\Command\Command}aliases = []; private ${SwissKnife202403\Symfony\Component\Console\Command\Command}definition = class SwissKnife202403\Symfony\Component\Console\Input\InputDefinition { private $arguments = [...]; private $requiredCount = 1; private $lastArrayArgument = class SwissKnife202403\Symfony\Component\Console\Input\InputArgument { ... }; private $lastOptionalArgument = NULL; private $options = [...]; private $negations = [...]; private $shortcuts = [...] }; private ${SwissKnife202403\Symfony\Component\Console\Command\Command}hidden = FALSE; private ${SwissKnife202403\Symfony\Component\Console\Command\Command}help = ''; private ${SwissKnife202403\Symfony\Component\Console\Command\Command}description = 'Finalize classes without children'; private ${SwissKnife202403\Symfony\Component\Console\Command\Command}fullDefinition = class SwissKnife202403\Symfony\Component\Console\Input\InputDefinition { private $arguments = [...]; private $requiredCount = 2; private $lastArrayArgument = class SwissKnife202403\Symfony\Component\Console\Input\InputArgument { ... }; private $lastOptionalArgument = NULL; private $options = [...]; private $negations = [...]; private $shortcuts = [...] }; private ${SwissKnife202403\Symfony\Component\Console\Command\Command}ignoreValidationErrors = FALSE; private ${SwissKnife202403\Symfony\Component\Console\Command\Command}code = NULL; private ${SwissKnife202403\Symfony\Component\Console\Command\Command}synopsis = []; private ${SwissKnife202403\Symfony\Component\Console\Command\Command}usages = []; private ${SwissKnife202403\Symfony\Component\Console\Command\Command}helperSet = class SwissKnife202403\Symfony\Component\Console\Helper\HelperSet { private $helpers = [...] }; private $symfonyStyle = class SwissKnife202403\Symfony\Component\Console\Style\SymfonyStyle { private ${SwissKnife202403\Symfony\Component\Console\Style\OutputStyle}output = class SwissKnife202403\Symfony\Component\Console\Output\ConsoleOutput { ... }; private $input = class SwissKnife202403\Symfony\Component\Console\Input\ArrayInput { ... }; private $output = class SwissKnife202403\Symfony\Component\Console\Output\ConsoleOutput { ... }; private $questionHelper = NULL; private $progressBar = class SwissKnife202403\Symfony\Component\Console\Helper\ProgressBar { ... }; private $lineLength = 120; private $bufferedOutput = class SwissKnife202403\Symfony\Component\Console\Output\TrimmedBufferOutput { ... } }; private $parentClassResolver = class Rector\SwissKnife\ParentClassResolver { private $cachedPhpParser = class Rector\SwissKnife\PhpParser\CachedPhpParser { ... } }; private $entityClassResolver = class Rector\SwissKnife\EntityClassResolver { private $cachedPhpParser = class Rector\SwissKnife\PhpParser\CachedPhpParser { ... } }; private $cachedPhpParser = class Rector\SwissKnife\PhpParser\CachedPhpParser { private $phpParser = class SwissKnife202403\PhpParser\Parser\Multiple { ... }; private $cachedStmts = [...] }; private $mockedClassResolver = class Rector\SwissKnife\MockedClassResolver { private $cachedPhpParser = class Rector\SwissKnife\PhpParser\CachedPhpParser { ... } } }, $input = class SwissKnife202403\Symfony\Component\Console\Input\ArgvInput { protected $definition = class SwissKnife202403\Symfony\Component\Console\Input\InputDefinition { private $arguments = [...]; private $requiredCount = 2; private $lastArrayArgument = class SwissKnife202403\Symfony\Component\Console\Input\InputArgument { ... }; private $lastOptionalArgument = NULL; private $options = [...]; private $negations = [...]; private $shortcuts = [...] }; protected $stream = NULL; protected $options = ['skip-mocked' => TRUE]; protected $arguments = ['command' => 'finalize-classes', 'paths' => [...]]; protected $interactive = TRUE; private $tokens = [0 => 'finalize-classes', 1 => 'src', 2 => 'tests', 3 => '--skip-mocked']; private $parsed = [] }, $output = class SwissKnife202403\Symfony\Component\Console\Output\ConsoleOutput { private ${SwissKnife202403\Symfony\Component\Console\Output\Output}verbosity = 32; private ${SwissKnife202403\Symfony\Component\Console\Output\Output}formatter = class SwissKnife202403\Symfony\Component\Console\Formatter\OutputFormatter { private $decorated = TRUE; private $styles = [...]; private $styleStack = class SwissKnife202403\Symfony\Component\Console\Formatter\OutputFormatterStyleStack { ... } }; private ${SwissKnife202403\Symfony\Component\Console\Output\StreamOutput}stream = resource(2) of type (stream); private $stderr = class SwissKnife202403\Symfony\Component\Console\Output\StreamOutput { private ${SwissKnife202403\Symfony\Component\Console\Output\Output}verbosity = 32; private ${SwissKnife202403\Symfony\Component\Console\Output\Output}formatter = class SwissKnife202403\Symfony\Component\Console\Formatter\OutputFormatter { ... }; private $stream = resource(3) of type (stream) }; private $consoleSectionOutputs = [] }) myproject/vendor/rector/swiss-knife/vendor/symfony/console/Application.php:333
PHP   7. SwissKnife202403\Symfony\Component\Console\Command\Command->run($input = class SwissKnife202403\Symfony\Component\Console\Input\ArgvInput { protected $definition = class SwissKnife202403\Symfony\Component\Console\Input\InputDefinition { private $arguments = [...]; private $requiredCount = 2; private $lastArrayArgument = class SwissKnife202403\Symfony\Component\Console\Input\InputArgument { ... }; private $lastOptionalArgument = NULL; private $options = [...]; private $negations = [...]; private $shortcuts = [...] }; protected $stream = NULL; protected $options = ['skip-mocked' => TRUE]; protected $arguments = ['command' => 'finalize-classes', 'paths' => [...]]; protected $interactive = TRUE; private $tokens = [0 => 'finalize-classes', 1 => 'src', 2 => 'tests', 3 => '--skip-mocked']; private $parsed = [] }, $output = class SwissKnife202403\Symfony\Component\Console\Output\ConsoleOutput { private ${SwissKnife202403\Symfony\Component\Console\Output\Output}verbosity = 32; private ${SwissKnife202403\Symfony\Component\Console\Output\Output}formatter = class SwissKnife202403\Symfony\Component\Console\Formatter\OutputFormatter { private $decorated = TRUE; private $styles = [...]; private $styleStack = class SwissKnife202403\Symfony\Component\Console\Formatter\OutputFormatterStyleStack { ... } }; private ${SwissKnife202403\Symfony\Component\Console\Output\StreamOutput}stream = resource(2) of type (stream); private $stderr = class SwissKnife202403\Symfony\Component\Console\Output\StreamOutput { private ${SwissKnife202403\Symfony\Component\Console\Output\Output}verbosity = 32; private ${SwissKnife202403\Symfony\Component\Console\Output\Output}formatter = class SwissKnife202403\Symfony\Component\Console\Formatter\OutputFormatter { ... }; private $stream = resource(3) of type (stream) }; private $consoleSectionOutputs = [] }) myproject/vendor/rector/swiss-knife/vendor/symfony/console/Application.php:960
PHP   8. Rector\SwissKnife\Command\FinalizeClassesCommand->execute($input = class SwissKnife202403\Symfony\Component\Console\Input\ArgvInput { protected $definition = class SwissKnife202403\Symfony\Component\Console\Input\InputDefinition { private $arguments = [...]; private $requiredCount = 2; private $lastArrayArgument = class SwissKnife202403\Symfony\Component\Console\Input\InputArgument { ... }; private $lastOptionalArgument = NULL; private $options = [...]; private $negations = [...]; private $shortcuts = [...] }; protected $stream = NULL; protected $options = ['skip-mocked' => TRUE]; protected $arguments = ['command' => 'finalize-classes', 'paths' => [...]]; protected $interactive = TRUE; private $tokens = [0 => 'finalize-classes', 1 => 'src', 2 => 'tests', 3 => '--skip-mocked']; private $parsed = [] }, $output = class SwissKnife202403\Symfony\Component\Console\Output\ConsoleOutput { private ${SwissKnife202403\Symfony\Component\Console\Output\Output}verbosity = 32; private ${SwissKnife202403\Symfony\Component\Console\Output\Output}formatter = class SwissKnife202403\Symfony\Component\Console\Formatter\OutputFormatter { private $decorated = TRUE; private $styles = [...]; private $styleStack = class SwissKnife202403\Symfony\Component\Console\Formatter\OutputFormatterStyleStack { ... } }; private ${SwissKnife202403\Symfony\Component\Console\Output\StreamOutput}stream = resource(2) of type (stream); private $stderr = class SwissKnife202403\Symfony\Component\Console\Output\StreamOutput { private ${SwissKnife202403\Symfony\Component\Console\Output\Output}verbosity = 32; private ${SwissKnife202403\Symfony\Component\Console\Output\Output}formatter = class SwissKnife202403\Symfony\Component\Console\Formatter\OutputFormatter { ... }; private $stream = resource(3) of type (stream) }; private $consoleSectionOutputs = [] }) myproject/vendor/rector/swiss-knife/vendor/symfony/console/Command/Command.php:327
PHP   9. Rector\SwissKnife\MockedClassResolver->resolve($paths = [0 => 'src', 1 => 'tests'], $progressClosure = class Closure { public $this = class Rector\SwissKnife\Command\FinalizeClassesCommand { private ${SwissKnife202403\Symfony\Component\Console\Command\Command}application = class SwissKnife202403\Symfony\Component\Console\Application { ... }; private ${SwissKnife202403\Symfony\Component\Console\Command\Command}name = 'finalize-classes'; private ${SwissKnife202403\Symfony\Component\Console\Command\Command}processTitle = NULL; private ${SwissKnife202403\Symfony\Component\Console\Command\Command}aliases = [...]; private ${SwissKnife202403\Symfony\Component\Console\Command\Command}definition = class SwissKnife202403\Symfony\Component\Console\Input\InputDefinition { ... }; private ${SwissKnife202403\Symfony\Component\Console\Command\Command}hidden = FALSE; private ${SwissKnife202403\Symfony\Component\Console\Command\Command}help = ''; private ${SwissKnife202403\Symfony\Component\Console\Command\Command}description = 'Finalize classes without children'; private ${SwissKnife202403\Symfony\Component\Console\Command\Command}fullDefinition = class SwissKnife202403\Symfony\Component\Console\Input\InputDefinition { ... }; private ${SwissKnife202403\Symfony\Component\Console\Command\Command}ignoreValidationErrors = FALSE; private ${SwissKnife202403\Symfony\Component\Console\Command\Command}code = NULL; private ${SwissKnife202403\Symfony\Component\Console\Command\Command}synopsis = [...]; private ${SwissKnife202403\Symfony\Component\Console\Command\Command}usages = [...]; private ${SwissKnife202403\Symfony\Component\Console\Command\Command}helperSet = class SwissKnife202403\Symfony\Component\Console\Helper\HelperSet { ... }; private $symfonyStyle = class SwissKnife202403\Symfony\Component\Console\Style\SymfonyStyle { ... }; private $parentClassResolver = class Rector\SwissKnife\ParentClassResolver { ... }; private $entityClassResolver = class Rector\SwissKnife\EntityClassResolver { ... }; private $cachedPhpParser = class Rector\SwissKnife\PhpParser\CachedPhpParser { ... }; private $mockedClassResolver = class Rector\SwissKnife\MockedClassResolver { ... } } }) myproject/vendor/rector/swiss-knife/src/Command/FinalizeClassesCommand.php:87
PHP  10. Rector\SwissKnife\MockedClassResolver->traverseFileInfos($phpFileInfos =; private ${SplFileInfo}fileName = '}, ...], $nodeTraverser = class SwissKnife202403\PhpParser\NodeTraverser { protected $visitors = [0 => class Rector\SwissKnife\PhpParser\NodeVisitor\MockedClassNameCollectingNodeVisitor { ... }]; protected $stopTraversal = FALSE }, $progressClosure = class Closure { public $this = class Rector\SwissKnife\Command\FinalizeClassesCommand { private ${SwissKnife202403\Symfony\Component\Console\Command\Command}application = class SwissKnife202403\Symfony\Component\Console\Application { ... }; private ${SwissKnife202403\Symfony\Component\Console\Command\Command}name = 'finalize-classes'; private ${SwissKnife202403\Symfony\Component\Console\Command\Command}processTitle = NULL; private ${SwissKnife202403\Symfony\Component\Console\Command\Command}aliases = [...]; private ${SwissKnife202403\Symfony\Component\Console\Command\Command}definition = class SwissKnife202403\Symfony\Component\Console\Input\InputDefinition { ... }; private ${SwissKnife202403\Symfony\Component\Console\Command\Command}hidden = FALSE; private ${SwissKnife202403\Symfony\Component\Console\Command\Command}help = ''; private ${SwissKnife202403\Symfony\Component\Console\Command\Command}description = 'Finalize classes without children'; private ${SwissKnife202403\Symfony\Component\Console\Command\Command}fullDefinition = class SwissKnife202403\Symfony\Component\Console\Input\InputDefinition { ... }; private ${SwissKnife202403\Symfony\Component\Console\Command\Command}ignoreValidationErrors = FALSE; private ${SwissKnife202403\Symfony\Component\Console\Command\Command}code = NULL; private ${SwissKnife202403\Symfony\Component\Console\Command\Command}synopsis = [...]; private ${SwissKnife202403\Symfony\Component\Console\Command\Command}usages = [...]; private ${SwissKnife202403\Symfony\Component\Console\Command\Command}helperSet = class SwissKnife202403\Symfony\Component\Console\Helper\HelperSet { ... }; private $symfonyStyle = class SwissKnife202403\Symfony\Component\Console\Style\SymfonyStyle { ... }; private $parentClassResolver = class Rector\SwissKnife\ParentClassResolver { ... }; private $entityClassResolver = class Rector\SwissKnife\EntityClassResolver { ... }; private $cachedPhpParser = class Rector\SwissKnife\PhpParser\CachedPhpParser { ... }; private $mockedClassResolver = class Rector\SwissKnife\MockedClassResolver { ... } } }) myproject/vendor/rector/swiss-knife/src/MockedClassResolver.php:35
PHP  11. SwissKnife202403\PhpParser\NodeTraverser->traverse($nodes = [0 => class SwissKnife202403\PhpParser\Node\Stmt\Namespace_ { protected $attributes = [...]; public $name = class SwissKnife202403\PhpParser\Node\Name { ... }; public $stmts = [...] }]) myproject/vendor/rector/swiss-knife/src/MockedClassResolver.php:47
PHP  12. SwissKnife202403\PhpParser\NodeTraverser->traverseArray($nodes = [0 => class SwissKnife202403\PhpParser\Node\Stmt\Namespace_ { protected $attributes = [...]; public $name = class SwissKnife202403\PhpParser\Node\Name { ... }; public $stmts = [...] }]) myproject/vendor/rector/swiss-knife/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:85
PHP  13. SwissKnife202403\PhpParser\NodeTraverser->traverseNode($node = class SwissKnife202403\PhpParser\Node\Stmt\Namespace_ { protected $attributes = ['startLine' => 3, 'endLine' => 182, 'kind' => 1]; public $name = class SwissKnife202403\PhpParser\Node\Name { protected $attributes = [...]; public $parts = [...] }; public $stmts = [0 => class SwissKnife202403\PhpParser\Node\Stmt\Use_ { ... }, 1 => class SwissKnife202403\PhpParser\Node\Stmt\Use_ { ... }, 2 => class SwissKnife202403\PhpParser\Node\Stmt\Use_ { ... }, 3 => class SwissKnife202403\PhpParser\Node\Stmt\Use_ { ... }, 4 => class SwissKnife202403\PhpParser\Node\Stmt\Use_ { ... }, 5 => class SwissKnife202403\PhpParser\Node\Stmt\Use_ { ... }, 6 => class SwissKnife202403\PhpParser\Node\Stmt\Class_ { ... }] }) myproject/vendor/rector/swiss-knife/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:196
PHP  14. SwissKnife202403\PhpParser\NodeTraverser->traverseArray($nodes = [0 => class SwissKnife202403\PhpParser\Node\Stmt\Use_ { protected $attributes = [...]; public $type = 1; public $uses = [...] }, 1 => class SwissKnife202403\PhpParser\Node\Stmt\Use_ { protected $attributes = [...]; public $type = 1; public $uses = [...] }, 2 => class SwissKnife202403\PhpParser\Node\Stmt\Use_ { protected $attributes = [...]; public $type = 1; public $uses = [...] }, 3 => class SwissKnife202403\PhpParser\Node\Stmt\Use_ { protected $attributes = [...]; public $type = 1; public $uses = [...] }, 4 => class SwissKnife202403\PhpParser\Node\Stmt\Use_ { protected $attributes = [...]; public $type = 1; public $uses = [...] }, 5 => class SwissKnife202403\PhpParser\Node\Stmt\Use_ { protected $attributes = [...]; public $type = 1; public $uses = [...] }, 6 => class SwissKnife202403\PhpParser\Node\Stmt\Class_ { protected $attributes = [...]; public $name = class SwissKnife202403\PhpParser\Node\Identifier { ... }; public $stmts = [...]; public $attrGroups = [...]; public $namespacedName = class SwissKnife202403\PhpParser\Node\Name { ... }; public $flags = 0; public $extends = class SwissKnife202403\PhpParser\Node\Name\FullyQualified { ... }; public $implements = [...] }]) myproject/vendor/rector/swiss-knife/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:105
PHP  15. SwissKnife202403\PhpParser\NodeTraverser->traverseNode($node = class SwissKnife202403\PhpParser\Node\Stmt\Class_ { protected $attributes = ['startLine' => 12, 'endLine' => 182]; public $name = class SwissKnife202403\PhpParser\Node\Identifier { protected $attributes = [...]; public $name = 'CollaboratorTest' }; public $stmts = [0 => class SwissKnife202403\PhpParser\Node\Stmt\Property { ... }, 1 => class SwissKnife202403\PhpParser\Node\Stmt\Property { ... }, 2 => class SwissKnife202403\PhpParser\Node\Stmt\ClassMethod { ... }, 3 => class SwissKnife202403\PhpParser\Node\Stmt\ClassMethod { ... }, 4 => class SwissKnife202403\PhpParser\Node\Stmt\ClassMethod { ... }, 5 => class SwissKnife202403\PhpParser\Node\Stmt\ClassMethod { ... }, 6 => class SwissKnife202403\PhpParser\Node\Stmt\ClassMethod { ... }, 7 => class SwissKnife202403\PhpParser\Node\Stmt\ClassMethod { ... }, 8 => class SwissKnife202403\PhpParser\Node\Stmt\ClassMethod { ... }, 9 => class SwissKnife202403\PhpParser\Node\Stmt\ClassMethod { ... }, 10 => class SwissKnife202403\PhpParser\Node\Stmt\ClassMethod { ... }, 11 => class SwissKnife202403\PhpParser\Node\Stmt\ClassMethod { ... }, 12 => class SwissKnife202403\PhpParser\Node\Stmt\ClassMethod { ... }, 13 => class SwissKnife202403\PhpParser\Node\Stmt\ClassMethod { ... }, 14 => class SwissKnife202403\PhpParser\Node\Stmt\ClassMethod { ... }, 15 => class SwissKnife202403\PhpParser\Node\Stmt\ClassMethod { ... }]; public $attrGroups = []; public $namespacedName = class SwissKnife202403\PhpParser\Node\Name { protected $attributes = [...]; public $parts = [...] }; public $flags = 0; public $extends = class SwissKnife202403\PhpParser\Node\Name\FullyQualified { protected $attributes = [...]; public $parts = [...] }; public $implements = [] }) myproject/vendor/rector/swiss-knife/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:196
PHP  16. SwissKnife202403\PhpParser\NodeTraverser->traverseArray($nodes = [0 => class SwissKnife202403\PhpParser\Node\Stmt\Property { protected $attributes = [...]; public $flags = 2; public $props = [...]; public $type = class SwissKnife202403\PhpParser\Node\Name\FullyQualified { ... }; public $attrGroups = [...] }, 1 => class SwissKnife202403\PhpParser\Node\Stmt\Property { protected $attributes = [...]; public $flags = 2; public $props = [...]; public $type = class SwissKnife202403\PhpParser\Node\Name\FullyQualified { ... }; public $attrGroups = [...] }, 2 => class SwissKnife202403\PhpParser\Node\Stmt\ClassMethod { protected $attributes = [...]; public $flags = 1; public $byRef = FALSE; public $name = class SwissKnife202403\PhpParser\Node\Identifier { ... }; public $params = [...]; public $returnType = class SwissKnife202403\PhpParser\Node\Identifier { ... }; public $stmts = [...]; public $attrGroups = [...] }, 3 => class SwissKnife202403\PhpParser\Node\Stmt\ClassMethod { protected $attributes = [...]; public $flags = 1; public $byRef = FALSE; public $name = class SwissKnife202403\PhpParser\Node\Identifier { ... }; public $params = [...]; public $returnType = NULL; public $stmts = [...]; public $attrGroups = [...] }, 4 => class SwissKnife202403\PhpParser\Node\Stmt\ClassMethod { protected $attributes = [...]; public $flags = 1; public $byRef = FALSE; public $name = class SwissKnife202403\PhpParser\Node\Identifier { ... }; public $params = [...]; public $returnType = NULL; public $stmts = [...]; public $attrGroups = [...] }, 5 => class SwissKnife202403\PhpParser\Node\Stmt\ClassMethod { protected $attributes = [...]; public $flags = 1; public $byRef = FALSE; public $name = class SwissKnife202403\PhpParser\Node\Identifier { ... }; public $params = [...]; public $returnType = NULL; public $stmts = [...]; public $attrGroups = [...] }, 6 => class SwissKnife202403\PhpParser\Node\Stmt\ClassMethod { protected $attributes = [...]; public $flags = 1; public $byRef = FALSE; public $name = class SwissKnife202403\PhpParser\Node\Identifier { ... }; public $params = [...]; public $returnType = NULL; public $stmts = [...]; public $attrGroups = [...] }, 7 => class SwissKnife202403\PhpParser\Node\Stmt\ClassMethod { protected $attributes = [...]; public $flags = 1; public $byRef = FALSE; public $name = class SwissKnife202403\PhpParser\Node\Identifier { ... }; public $params = [...]; public $returnType = NULL; public $stmts = [...]; public $attrGroups = [...] }, 8 => class SwissKnife202403\PhpParser\Node\Stmt\ClassMethod { protected $attributes = [...]; public $flags = 1; public $byRef = FALSE; public $name = class SwissKnife202403\PhpParser\Node\Identifier { ... }; public $params = [...]; public $returnType = NULL; public $stmts = [...]; public $attrGroups = [...] }, 9 => class SwissKnife202403\PhpParser\Node\Stmt\ClassMethod { protected $attributes = [...]; public $flags = 1; public $byRef = FALSE; public $name = class SwissKnife202403\PhpParser\Node\Identifier { ... }; public $params = [...]; public $returnType = NULL; public $stmts = [...]; public $attrGroups = [...] }, 10 => class SwissKnife202403\PhpParser\Node\Stmt\ClassMethod { protected $attributes = [...]; public $flags = 1; public $byRef = FALSE; public $name = class SwissKnife202403\PhpParser\Node\Identifier { ... }; public $params = [...]; public $returnType = NULL; public $stmts = [...]; public $attrGroups = [...] }, 11 => class SwissKnife202403\PhpParser\Node\Stmt\ClassMethod { protected $attributes = [...]; public $flags = 1; public $byRef = FALSE; public $name = class SwissKnife202403\PhpParser\Node\Identifier { ... }; public $params = [...]; public $returnType = NULL; public $stmts = [...]; public $attrGroups = [...] }, 12 => class SwissKnife202403\PhpParser\Node\Stmt\ClassMethod { protected $attributes = [...]; public $flags = 1; public $byRef = FALSE; public $name = class SwissKnife202403\PhpParser\Node\Identifier { ... }; public $params = [...]; public $returnType = NULL; public $stmts = [...]; public $attrGroups = [...] }, 13 => class SwissKnife202403\PhpParser\Node\Stmt\ClassMethod { protected $attributes = [...]; public $flags = 1; public $byRef = FALSE; public $name = class SwissKnife202403\PhpParser\Node\Identifier { ... }; public $params = [...]; public $returnType = NULL; public $stmts = [...]; public $attrGroups = [...] }, 14 => class SwissKnife202403\PhpParser\Node\Stmt\ClassMethod { protected $attributes = [...]; public $flags = 1; public $byRef = FALSE; public $name = class SwissKnife202403\PhpParser\Node\Identifier { ... }; public $params = [...]; public $returnType = NULL; public $stmts = [...]; public $attrGroups = [...] }, 15 => class SwissKnife202403\PhpParser\Node\Stmt\ClassMethod { protected $attributes = [...]; public $flags = 1; public $byRef = FALSE; public $name = class SwissKnife202403\PhpParser\Node\Identifier { ... }; public $params = [...]; public $returnType = NULL; public $stmts = [...]; public $attrGroups = [...] }]) myproject/vendor/rector/swiss-knife/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:105
PHP  17. SwissKnife202403\PhpParser\NodeTraverser->traverseNode($node = class SwissKnife202403\PhpParser\Node\Stmt\ClassMethod { protected $attributes = ['startLine' => 36, 'endLine' => 53]; public $flags = 1; public $byRef = FALSE; public $name = class SwissKnife202403\PhpParser\Node\Identifier { protected $attributes = [...]; public $name = 'testJsonFormatCreatedAtReturnsFormatOfCreatedAt' }; public $params = []; public $returnType = NULL; public $stmts = [0 => class SwissKnife202403\PhpParser\Node\Stmt\Expression { ... }, 1 => class SwissKnife202403\PhpParser\Node\Stmt\Expression { ... }, 2 => class SwissKnife202403\PhpParser\Node\Stmt\Expression { ... }, 3 => class SwissKnife202403\PhpParser\Node\Stmt\Expression { ... }, 4 => class SwissKnife202403\PhpParser\Node\Stmt\Expression { ... }, 5 => class SwissKnife202403\PhpParser\Node\Stmt\Expression { ... }]; public $attrGroups = [] }) myproject/vendor/rector/swiss-knife/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:196
PHP  18. SwissKnife202403\PhpParser\NodeTraverser->traverseArray($nodes = [0 => class SwissKnife202403\PhpParser\Node\Stmt\Expression { protected $attributes = [...]; public $expr = class SwissKnife202403\PhpParser\Node\Expr\Assign { ... } }, 1 => class SwissKnife202403\PhpParser\Node\Stmt\Expression { protected $attributes = [...]; public $expr = class SwissKnife202403\PhpParser\Node\Expr\Assign { ... } }, 2 => class SwissKnife202403\PhpParser\Node\Stmt\Expression { protected $attributes = [...]; public $expr = class SwissKnife202403\PhpParser\Node\Expr\MethodCall { ... } }, 3 => class SwissKnife202403\PhpParser\Node\Stmt\Expression { protected $attributes = [...]; public $expr = class SwissKnife202403\PhpParser\Node\Expr\Assign { ... } }, 4 => class SwissKnife202403\PhpParser\Node\Stmt\Expression { protected $attributes = [...]; public $expr = class SwissKnife202403\PhpParser\Node\Expr\MethodCall { ... } }, 5 => class SwissKnife202403\PhpParser\Node\Stmt\Expression { protected $attributes = [...]; public $expr = class SwissKnife202403\PhpParser\Node\Expr\MethodCall { ... } }]) myproject/vendor/rector/swiss-knife/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:105
PHP  19. SwissKnife202403\PhpParser\NodeTraverser->traverseNode($node = class SwissKnife202403\PhpParser\Node\Stmt\Expression { protected $attributes = ['startLine' => 43, 'endLine' => 46]; public $expr = class SwissKnife202403\PhpParser\Node\Expr\Assign { protected $attributes = [...]; public $var = class SwissKnife202403\PhpParser\Node\Expr\Variable { ... }; public $expr = class SwissKnife202403\PhpParser\Node\Expr\MethodCall { ... } } }) myproject/vendor/rector/swiss-knife/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:196
PHP  20. SwissKnife202403\PhpParser\NodeTraverser->traverseNode($node = class SwissKnife202403\PhpParser\Node\Expr\Assign { protected $attributes = ['startLine' => 43, 'endLine' => 46]; public $var = class SwissKnife202403\PhpParser\Node\Expr\Variable { protected $attributes = [...]; public $name = 'entity' }; public $expr = class SwissKnife202403\PhpParser\Node\Expr\MethodCall { protected $attributes = [...]; public $var = class SwissKnife202403\PhpParser\Node\Expr\MethodCall { ... }; public $name = class SwissKnife202403\PhpParser\Node\Identifier { ... }; public $args = [...] } }) myproject/vendor/rector/swiss-knife/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:133
PHP  21. Rector\SwissKnife\PhpParser\NodeVisitor\MockedClassNameCollectingNodeVisitor->enterNode($node = class SwissKnife202403\PhpParser\Node\Expr\MethodCall { protected $attributes = ['startLine' => 43, 'endLine' => 46]; public $var = class SwissKnife202403\PhpParser\Node\Expr\MethodCall { protected $attributes = [...]; public $var = class SwissKnife202403\PhpParser\Node\Expr\MethodCall { ... }; public $name = class SwissKnife202403\PhpParser\Node\Identifier { ... }; public $args = [...] }; public $name = class SwissKnife202403\PhpParser\Node\Identifier { protected $attributes = [...]; public $name = 'getMock' }; public $args = [] }) myproject/vendor/rector/swiss-knife/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:113
TomasVotruba commented 4 months ago

Thanks for reporting :+1:

PHP Warning:  Attempt to read property "value" on null in myproject/vendor/rector/swiss-knife/src/PhpParser/NodeVisitor/MockedClassNameCollectingNodeVisitor.php on line 33

It seems related to non-existing arg type: https://github.com/rectorphp/swiss-knife/blob/0.2.0/src/PhpParser/NodeVisitor/MockedClassNameCollectingNodeVisitor.php#L33

TomasVotruba commented 4 months ago

Could you try 0.2.1?

shakaran commented 4 months ago

Could you try 0.2.1?

Sorry for delay, confirmed, working perfectly now. Thanks