Skip to content

Conversation

alexandreelise
Copy link

No description provided.

@ondrejmirtes
Copy link
Member

I don't think there's an actual bug. Please provide a bug report / failing test first.

Attempt to prevent null exception on ` $arg->getAttribute `  call
@alexandreelise
Copy link
Author

I don't think there's an actual bug. Please provide a bug report / failing test first.

Hi ondrej.

I have a private project that I can't share that I scanned with php vendor/bin/rector process --dry-run --debug --xdebug that gave me this stack trace

rector/rector:2.0.6

phpstan/phpstan:2.1.1 installed via composer

 "System error: "Call to a member function getAttribute() on null"                                              
                                                                                                                        
         Stack trace:                                                                                                   
         #0 phar://vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(1876):                        
         PHPStan\Reflection\ParametersAcceptorSelector::selectFromArgs()                                                
         #1 phar://vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(691):                         
         PHPStan\Analyser\NodeScopeResolver->processExprNode()                                                          
         #2 phar://vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(390):                         
         PHPStan\Analyser\NodeScopeResolver->processStmtNode()                                                          
         #3 vendor/rector/rector/src/NodeTypeResolver/PHPStan/Scope/PHPStanNodeScopeResolver.php(402):                  
         PHPStan\Analyser\NodeScopeResolver->processNodes()                                                             
         #4 vendor/rector/rector/src/NodeTypeResolver/PHPStan/Scope/PHPStanNodeScopeResolver.php(341):                  
         Rector\NodeTypeResolver\PHPStan\Scope\PHPStanNodeScopeResolver->nodeScopeResolverProcessNodes()                
         #5 vendor/rector/rector/src/Application/ChangedNodeScopeRefresher.php(68):                                     
         Rector\NodeTypeResolver\PHPStan\Scope\PHPStanNodeScopeResolver->processNodes()                                 
         #6 vendor/rector/rector/src/Rector/AbstractRector.php(278):                                                    
         Rector\Application\ChangedNodeScopeRefresher->refresh()                                                        
         #7 vendor/rector/rector/src/Rector/AbstractRector.php(268): Rector\Rector\AbstractRector->refreshScopeNodes()  
         #8 vendor/rector/rector/src/Rector/AbstractRector.php(139):                                                    
         Rector\Rector\AbstractRector->postRefactorProcess()                                                            
         #9 vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(99):                           
         Rector\Rector\AbstractRector->enterNode()                                                                      
         #10 vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(121):                         
         PhpParser\NodeTraverser->traverseNode()                                                                        
         #11 vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(192):                         
         PhpParser\NodeTraverser->traverseNode()                                                                        
         #12 vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(90):                          
         PhpParser\NodeTraverser->traverseArray()                                                                       
         #13 vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(192):                         
         PhpParser\NodeTraverser->traverseNode()                                                                        
         #14 vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(90):                          
         PhpParser\NodeTraverser->traverseArray()                                                                       
         #15 vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(192):                         
         PhpParser\NodeTraverser->traverseNode()                                                                        
         #16 vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(90):                          
         PhpParser\NodeTraverser->traverseArray()                                                                       
         #17 vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(192):                         
         PhpParser\NodeTraverser->traverseNode()                                                                        
         #18 vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(71):                          
         PhpParser\NodeTraverser->traverseArray()                                                                       
         #19 vendor/rector/rector/src/PhpParser/NodeTraverser/RectorNodeTraverser.php(49):                              
         PhpParser\NodeTraverser->traverse()                                                                            
         #20 vendor/rector/rector/src/Application/FileProcessor.php(95):                                                
         Rector\PhpParser\NodeTraverser\RectorNodeTraverser->traverse()                                                 
         #21 vendor/rector/rector/src/Application/ApplicationFileProcessor.php(174):                                    
         Rector\Application\FileProcessor->processFile()                                                                
         #22 vendor/rector/rector/src/Application/ApplicationFileProcessor.php(151):                                    
         Rector\Application\ApplicationFileProcessor->processFile()                                                     
         #23 vendor/rector/rector/src/Application/ApplicationFileProcessor.php(128):                                    
         Rector\Application\ApplicationFileProcessor->processFiles()                                                    
         #24 vendor/rector/rector/src/Console/Command/ProcessCommand.php(157):                                          
         Rector\Application\ApplicationFileProcessor->run()                                                             
         #25 vendor/rector/rector/vendor/symfony/console/Command/Command.php(285):                                      
         Rector\Console\Command\ProcessCommand->execute()                                                               
         #26 vendor/rector/rector/vendor/symfony/console/Application.php(900):                                          
         RectorPrefix202412\Symfony\Component\Console\Command\Command->run()                                            
         #27 vendor/rector/rector/vendor/symfony/console/Application.php(279):                                          
         RectorPrefix202412\Symfony\Component\Console\Application->doRunCommand()                                       
         #28 vendor/rector/rector/src/Console/ConsoleApplication.php(53):                                               
         RectorPrefix202412\Symfony\Component\Console\Application->doRun()                                              
         #29 vendor/rector/rector/vendor/symfony/console/Application.php(162):                                          
         Rector\Console\ConsoleApplication->doRun()                                                                     
         #30 vendor/rector/rector/bin/rector.php(130): RectorPrefix202412\Symfony\Component\Console\Application->run()  
         #31 vendor/rector/rector/bin/rector(5): require_once('...')                                                    
         #32 vendor/bin/rector(119): include('...')                                                                     
         #33 {main}". On line: 73                                                                                       

The first lines of the stack trace refer to phpstan. I already checked in rector-src too.

I sincerely don't want to bother you for this. You have much more to do. But I wanted to give my 2cent since I use your tool and rector everyday.

Anyway, enjoy your day @ondrejmirtes


@ondrejmirtes
Copy link
Member

You should be able to reproduce this with public-only code. And report the bug to Rector.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants