You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Affected versions: 1.2.0...1.2.3
Works in: <=1.1.0
Hi,
we're using PhpStan in our CI for a couple of years now in a lot of projects. Over the weekend, all of our CIs have gone from green to red when running using at least v1.2.0 or newer.
The projects who are being affected are all Symfony 5.4 apps, running with doctrine/dbal v3.3.0.
On the Symfony side, we're relying purely on auto_mapping and haven't explicitly specified paths to entities within bundles, other than the default configuration for our own app:
doctrine:
dbal:
url: '%env(resolve:DATABASE_URL)%'# IMPORTANT: You MUST configure your server version,# either here or in the DATABASE_URL env var (see .env file)#server_version: '5.7'orm:
auto_generate_proxy_classes: truenaming_strategy: doctrine.orm.naming_strategy.underscore_number_awareauto_mapping: truemappings:
App:
is_bundle: falsetype: annotationdir: '%kernel.project_dir%/src/Entity'prefix: 'App\Entity'alias: App
Now, when our CI (or locally) tries to execute PhpStan using php vendor/bin/phpstan analyse --memory-limit 4G --ansi -c vendor-bin/test/vendor/becklyn/php-cs/phpstan/symfony.neon . (the config looks like this: https://github.com/Becklyn/php-cs/blob/release/phpstan/symfony.neon), we're getting an exception from the AnnotationDriver that is complaining about missing paths to our entities.
Is there a configuration that we're missing or is this simply a bug in either Doctrine or PhpStan?
Exception + Stacktrace
Prepended by „a very very long list of migrations and entities”
Did PHPStan help you today? Did it make you happy in any way?
PhpStan has been making me happy since one of the very first versions on a daily basis ❤️ That is also why I'm trying to support you guys through PhpStan Pro and through numerous bug reports and issues :)
The text was updated successfully, but these errors were encountered:
Hello, sorry for the inconvenience! phpstan-doctrine 1.2.0 tries to bring some of the benefits of having a configured objectManagerLoader (https://github.com/phpstan/phpstan-doctrine/#configuration) to those users who didn't configure it. And after the release I'm discovering all the edge-cases and situations that need to be thought of.
Bug report
Affected versions:
1.2.0...1.2.3
Works in:
<=1.1.0
Hi,
we're using PhpStan in our CI for a couple of years now in a lot of projects. Over the weekend, all of our CIs have gone from green to red when running using at least v1.2.0 or newer.
The projects who are being affected are all Symfony 5.4 apps, running with
doctrine/dbal
v3.3.0.On the Symfony side, we're relying purely on
auto_mapping
and haven't explicitly specified paths to entities within bundles, other than the default configuration for our own app:Now, when our CI (or locally) tries to execute PhpStan using
php vendor/bin/phpstan analyse --memory-limit 4G --ansi -c vendor-bin/test/vendor/becklyn/php-cs/phpstan/symfony.neon .
(the config looks like this: https://github.com/Becklyn/php-cs/blob/release/phpstan/symfony.neon), we're getting an exception from theAnnotationDriver
that is complaining about missing paths to our entities.Is there a configuration that we're missing or is this simply a bug in either Doctrine or PhpStan?
Exception + Stacktrace
Uncaught Doctrine\Persistence\Mapping\MappingException: Specifying the paths to your entities is required in the AnnotationDriver to retrieve all class names. in /Users/keichinger/dev/current/censored/vendor/doctrine/persistence/lib/Doctrine/Persistence/Mapping/MappingException.php:35
#0 /Users/keichinger/dev/current/censored/vendor/doctrine/persistence/lib/Doctrine/Persistence/Mapping/Driver/AnnotationDriver.php(200): Doctrine\Persistence\Mapping\MappingException::pathRequired()
#1 /Users/keichinger/dev/current/censored/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php(310): Doctrine\Persistence\Mapping\Driver\AnnotationDriver->getAllClassNames()
#2 /Users/keichinger/dev/current/censored/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php(216): Doctrine\ORM\Mapping\ClassMetadataFactory->addDefaultDiscriminatorMap(Object(Doctrine\ORM\Mapping\ClassMetadata))
#3 /Users/keichinger/dev/current/censored/vendor/doctrine/persistence/lib/Doctrine/Persistence/Mapping/AbstractClassMetadataFactory.php(391): Doctrine\ORM\Mapping\ClassMetadataFactory->doLoadMetadata(Object(Doctrine\ORM\Mapping\ClassMetadata), NULL, false, Array)
#4 /Users/keichinger/dev/current/censored/vendor/doctrine/persistence/lib/Doctrine/Persistence/Mapping/AbstractClassMetadataFactory.php(279): Doctrine\Persistence\Mapping\AbstractClassMetadataFactory->loadMetadata('App\Entity\Cont...')
#5 /Users/keichinger/dev/current/censored/vendor-bin/test/vendor/phpstan/phpstan-doctrine/src/Type/Doctrine/ObjectMetadataResolver.php(115): Doctrine\Persistence\Mapping\AbstractClassMetadataFactory->getMetadataFor('App\Entity\Cont...')
#6 /Users/keichinger/dev/current/censored/vendor-bin/test/vendor/phpstan/phpstan-doctrine/src/Rules/Doctrine/ORM/PropertiesExtension.php(70): PHPStan\Type\Doctrine\ObjectMetadataResolver->getClassMetadata('App\Entity\Cont...')
#7 phar:///Users/keichinger/dev/current/censored/vendor-bin/test/vendor/phpstan/phpstan/phpstan.phar/src/Node/ClassPropertiesNode.php(121): PHPStan\Rules\Doctrine\ORM\PropertiesExtension->isInitialized(Object(PHPStan\Reflection\Php\PhpPropertyReflection), 'slot')
#8 phar:///Users/keichinger/dev/current/censored/vendor-bin/test/vendor/phpstan/phpstan/phpstan.phar/src/Rules/Properties/UninitializedPropertyRule.php(50): PHPStan\Node\ClassPropertiesNode->getUninitializedProperties(Object(PHPStan\Analyser\MutatingScope), Array, Array)
#9 phar:///Users/keichinger/dev/current/censored/vendor-bin/test/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/FileAnalyser.php(94): PHPStan\Rules\Properties\UninitializedPropertyRule->processNode(Object(PHPStan\Node\ClassPropertiesNode), Object(PHPStan\Analyser\MutatingScope))
#10 phar:///Users/keichinger/dev/current/censored/vendor-bin/test/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(545): PHPStan\Analyser\FileAnalyser->PHPStan\Analyser{closure}(Object(PHPStan\Node\ClassPropertiesNode), Object(PHPStan\Analyser\MutatingScope))
#11 phar:///Users/keichinger/dev/current/censored/vendor-bin/test/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(298): PHPStan\Analyser\NodeScopeResolver->processStmtNode(Object(PhpParser\Node\Stmt\Class_), Object(PHPStan\Analyser\MutatingScope), Object(Closure))
#12 phar:///Users/keichinger/dev/current/censored/vendor-bin/test/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(510): PHPStan\Analyser\NodeScopeResolver->processStmtNodes(Object(PhpParser\Node\Stmt\Namespace_), Array, Object(PHPStan\Analyser\MutatingScope), Object(Closure))
#13 phar:///Users/keichinger/dev/current/censored/vendor-bin/test/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(269): PHPStan\Analyser\NodeScopeResolver->processStmtNode(Object(PhpParser\Node\Stmt\Namespace_), Object(PHPStan\Analyser\MutatingScope), Object(Closure))
#14 phar:///Users/keichinger/dev/current/censored/vendor-bin/test/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/FileAnalyser.php(181): PHPStan\Analyser\NodeScopeResolver->processNodes(Array, Object(PHPStan\Analyser\MutatingScope), Object(Closure))
#15 phar:///Users/keichinger/dev/current/censored/vendor-bin/test/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/Analyser.php(69): PHPStan\Analyser\FileAnalyser->analyseFile('/Users/keiching...', Array, Object(PHPStan\Rules\Registry), NULL)
#16 phar:///Users/keichinger/dev/current/censored/vendor-bin/test/vendor/phpstan/phpstan/phpstan.phar/src/Command/AnalyserRunner.php(62): PHPStan\Analyser\Analyser->analyse(Array, Object(Closure), NULL, true, Array)
#17 phar:///Users/keichinger/dev/current/censored/vendor-bin/test/vendor/phpstan/phpstan/phpstan.phar/src/Command/AnalyseApplication.php(163): PHPStan\Command\AnalyserRunner->runAnalyser(Array, Array, Object(Closure), NULL, true, true, '/Users/keiching...', NULL, NULL, Object(_PHPStan_70b6e53dc\Symfony\Component\Console\Input\ArgvInput))
#18 phar:///Users/keichinger/dev/current/censored/vendor-bin/test/vendor/phpstan/phpstan/phpstan.phar/src/Command/AnalyseApplication.php(95): PHPStan\Command\AnalyseApplication->runAnalyser(Array, Array, true, '/Users/keiching...', Object(PHPStan\Command\Symfony\SymfonyOutput), Object(PHPStan\Command\Symfony\SymfonyOutput), Object(_PHPStan_70b6e53dc\Symfony\Component\Console\Input\ArgvInput))
#19 phar:///Users/keichinger/dev/current/censored/vendor-bin/test/vendor/phpstan/phpstan/phpstan.phar/src/Command/AnalyseCommand.php(175): PHPStan\Command\AnalyseApplication->analyse(Array, false, Object(PHPStan\Command\Symfony\SymfonyOutput), Object(PHPStan\Command\Symfony\SymfonyOutput), false, true, '/Users/keiching...', Array, Object(_PHPStan_70b6e53dc\Symfony\Component\Console\Input\ArgvInput))
#20 phar:///Users/keichinger/dev/current/censored/vendor-bin/test/vendor/phpstan/phpstan/phpstan.phar/vendor/symfony/console/Command/Command.php(259): PHPStan\Command\AnalyseCommand->execute(Object(_PHPStan_70b6e53dc\Symfony\Component\Console\Input\ArgvInput), Object(_PHPStan_70b6e53dc\Symfony\Component\Console\Output\ConsoleOutput))
#21 phar:///Users/keichinger/dev/current/censored/vendor-bin/test/vendor/phpstan/phpstan/phpstan.phar/vendor/symfony/console/Application.php(848): _PHPStan_70b6e53dc\Symfony\Component\Console\Command\Command->run(Object(_PHPStan_70b6e53dc\Symfony\Component\Console\Input\ArgvInput), Object(_PHPStan_70b6e53dc\Symfony\Component\Console\Output\ConsoleOutput))
#22 phar:///Users/keichinger/dev/current/censored/vendor-bin/test/vendor/phpstan/phpstan/phpstan.phar/vendor/symfony/console/Application.php(259): _PHPStan_70b6e53dc\Symfony\Component\Console\Application->doRunCommand(Object(PHPStan\Command\AnalyseCommand), Object(_PHPStan_70b6e53dc\Symfony\Component\Console\Input\ArgvInput), Object(_PHPStan_70b6e53dc\Symfony\Component\Console\Output\ConsoleOutput))
#23 phar:///Users/keichinger/dev/current/censored/vendor-bin/test/vendor/phpstan/phpstan/phpstan.phar/vendor/symfony/console/Application.php(157): _PHPStan_70b6e53dc\Symfony\Component\Console\Application->doRun(Object(_PHPStan_70b6e53dc\Symfony\Component\Console\Input\ArgvInput), Object(_PHPStan_70b6e53dc\Symfony\Component\Console\Output\ConsoleOutput))
#24 phar:///Users/keichinger/dev/current/censored/vendor-bin/test/vendor/phpstan/phpstan/phpstan.phar/bin/phpstan(94): _PHPStan_70b6e53dc\Symfony\Component\Console\Application->run()
#25 phar:///Users/keichinger/dev/current/censored/vendor-bin/test/vendor/phpstan/phpstan/phpstan.phar/bin/phpstan(95): _PHPStan_70b6e53dc{closure}()
#26 /Users/keichinger/dev/current/censored/vendor-bin/test/vendor/phpstan/phpstan/phpstan(7): require('phar:///Users/k...')
#27 /Users/keichinger/dev/current/censored/vendor/bin/phpstan(112): include('/Users/keiching...')
#28 {main}
Code snippet that reproduces the problem
symfony new
Expected output
Did PHPStan help you today? Did it make you happy in any way?
PhpStan has been making me happy since one of the very first versions on a daily basis ❤️ That is also why I'm trying to support you guys through PhpStan Pro and through numerous bug reports and issues :)
The text was updated successfully, but these errors were encountered: