Closed gndk closed 2 years ago
symplify/phpstan-rules needs to be in the no-dev depedencies, because the rules extend AbstractSymplifyRule (see Example).
symplify/phpstan-rules
AbstractSymplifyRule
Without this change, running vendor/bin/phpstan with the following config causes an exception.
vendor/bin/phpstan
# file phpstan.neon includes: - vendor/reveal/reveal/packages/reveal-twig/config/services.neon - vendor/reveal/reveal/packages/reveal-twig/config/rules.neon - vendor/reveal/reveal/packages/twig-phpstan-compiler/config/services.neon - vendor/reveal/reveal/packages/template-phpstan-compiler/config/services.neon - vendor/symplify/astral/config/services.neon
vagrant@dev:/srv/share$ vendor/bin/phpstan Note: Using configuration file /srv/share/phpstan.neon. PHP Fatal error: Uncaught Error: Class "Symplify\PHPStanRules\Rules\AbstractSymplifyRule" not found in /srv/share/vendor/reveal/reveal/packages/reveal-twig/src/Rules/NoTwigMissingVariableRule.php:20 Stack trace: #0 phar:///srv/share/vendor/phpstan/phpstan/phpstan.phar/vendor/composer/ClassLoader.php(571): include() #1 phar:///srv/share/vendor/phpstan/phpstan/phpstan.phar/vendor/composer/ClassLoader.php(428): Composer\Autoload\includeFile() #2 [internal function]: Composer\Autoload\ClassLoader->loadClass() #3 phar:///srv/share/vendor/phpstan/phpstan/phpstan.phar/vendor/nette/di/src/DI/Resolver.php(110): class_exists() #4 phar:///srv/share/vendor/phpstan/phpstan/phpstan.phar/vendor/nette/di/src/DI/Definitions/ServiceDefinition.php(139): _PHPStan_a355aaa14\Nette\DI\Resolver->resolveEntityType() #5 phar:///srv/share/vendor/phpstan/phpstan/phpstan.phar/vendor/nette/di/src/DI/Resolver.php(56): _PHPStan_a355aaa14\Nette\DI\Definitions\ServiceDefinition->resolveType() #6 phar:///srv/share/vendor/phpstan/phpstan/phpstan.phar/vendor/nette/di/src/DI/ContainerBuilder.php(231): _PHPStan_a355aaa14\Nette\DI\Resolver->resolveDefinition() #7 phar:///srv/share/vendor/phpstan/phpstan/phpstan.phar/vendor/nette/di/src/DI/Compiler.php(198): _PHPStan_a355aaa14\Nette\DI\ContainerBuilder->resolve() #8 phar:///srv/share/vendor/phpstan/phpstan/phpstan.phar/vendor/nette/di/src/DI/Compiler.php(159): _PHPStan_a355aaa14\Nette\DI\Compiler->processBeforeCompile() #9 phar:///srv/share/vendor/phpstan/phpstan/phpstan.phar/vendor/nette/di/src/DI/ContainerLoader.php(99): _PHPStan_a355aaa14\Nette\DI\Compiler->compile() #10 phar:///srv/share/vendor/phpstan/phpstan/phpstan.phar/vendor/nette/di/src/DI/ContainerLoader.php(66): _PHPStan_a355aaa14\Nette\DI\ContainerLoader->generate() #11 phar:///srv/share/vendor/phpstan/phpstan/phpstan.phar/vendor/nette/di/src/DI/ContainerLoader.php(34): _PHPStan_a355aaa14\Nette\DI\ContainerLoader->loadFile() #12 phar:///srv/share/vendor/phpstan/phpstan/phpstan.phar/src/DependencyInjection/Configurator.php(40): _PHPStan_a355aaa14\Nette\DI\ContainerLoader->load() #13 phar:///srv/share/vendor/phpstan/phpstan/phpstan.phar/vendor/nette/bootstrap/src/Bootstrap/Configurator.php(175): PHPStan\DependencyInjection\Configurator->loadContainer() #14 phar:///srv/share/vendor/phpstan/phpstan/phpstan.phar/src/DependencyInjection/ContainerFactory.php(81): _PHPStan_a355aaa14\Nette\Bootstrap\Configurator->createContainer() #15 phar:///srv/share/vendor/phpstan/phpstan/phpstan.phar/src/Command/CommandHelper.php(242): PHPStan\DependencyInjection\ContainerFactory->create() #16 phar:///srv/share/vendor/phpstan/phpstan/phpstan.phar/src/Command/AnalyseCommand.php(107): PHPStan\Command\CommandHelper::begin() #17 phar:///srv/share/vendor/phpstan/phpstan/phpstan.phar/vendor/symfony/console/Command/Command.php(259): PHPStan\Command\AnalyseCommand->execute() #18 phar:///srv/share/vendor/phpstan/phpstan/phpstan.phar/vendor/symfony/console/Application.php(856): _PHPStan_a355aaa14\Symfony\Component\Console\Command\Command->run() #19 phar:///srv/share/vendor/phpstan/phpstan/phpstan.phar/vendor/symfony/console/Application.php(259): _PHPStan_a355aaa14\Symfony\Component\Console\Application->doRunCommand() #20 phar:///srv/share/vendor/phpstan/phpstan/phpstan.phar/vendor/symfony/console/Application.php(157): _PHPStan_a355aaa14\Symfony\Component\Console\Application->doRun() #21 phar:///srv/share/vendor/phpstan/phpstan/phpstan.phar/bin/phpstan(94): _PHPStan_a355aaa14\Symfony\Component\Console\Application->run() #22 phar:///srv/share/vendor/phpstan/phpstan/phpstan.phar/bin/phpstan(95): _PHPStan_a355aaa14\{closure}() #23 /srv/share/vendor/phpstan/phpstan/phpstan(8): require('...') #24 /srv/share/vendor/bin/phpstan(117): include('...') #25 {main} thrown in /srv/share/vendor/reveal/reveal/packages/reveal-twig/src/Rules/NoTwigMissingVariableRule.php on line 20 Fatal error: Uncaught Error: Class "Symplify\PHPStanRules\Rules\AbstractSymplifyRule" not found in /srv/share/vendor/reveal/reveal/packages/reveal-twig/src/Rules/NoTwigMissingVariableRule.php:20 Stack trace: #0 phar:///srv/share/vendor/phpstan/phpstan/phpstan.phar/vendor/composer/ClassLoader.php(571): include() #1 phar:///srv/share/vendor/phpstan/phpstan/phpstan.phar/vendor/composer/ClassLoader.php(428): Composer\Autoload\includeFile() #2 [internal function]: Composer\Autoload\ClassLoader->loadClass() #3 phar:///srv/share/vendor/phpstan/phpstan/phpstan.phar/vendor/nette/di/src/DI/Resolver.php(110): class_exists() #4 phar:///srv/share/vendor/phpstan/phpstan/phpstan.phar/vendor/nette/di/src/DI/Definitions/ServiceDefinition.php(139): _PHPStan_a355aaa14\Nette\DI\Resolver->resolveEntityType() #5 phar:///srv/share/vendor/phpstan/phpstan/phpstan.phar/vendor/nette/di/src/DI/Resolver.php(56): _PHPStan_a355aaa14\Nette\DI\Definitions\ServiceDefinition->resolveType() #6 phar:///srv/share/vendor/phpstan/phpstan/phpstan.phar/vendor/nette/di/src/DI/ContainerBuilder.php(231): _PHPStan_a355aaa14\Nette\DI\Resolver->resolveDefinition() #7 phar:///srv/share/vendor/phpstan/phpstan/phpstan.phar/vendor/nette/di/src/DI/Compiler.php(198): _PHPStan_a355aaa14\Nette\DI\ContainerBuilder->resolve() #8 phar:///srv/share/vendor/phpstan/phpstan/phpstan.phar/vendor/nette/di/src/DI/Compiler.php(159): _PHPStan_a355aaa14\Nette\DI\Compiler->processBeforeCompile() #9 phar:///srv/share/vendor/phpstan/phpstan/phpstan.phar/vendor/nette/di/src/DI/ContainerLoader.php(99): _PHPStan_a355aaa14\Nette\DI\Compiler->compile() #10 phar:///srv/share/vendor/phpstan/phpstan/phpstan.phar/vendor/nette/di/src/DI/ContainerLoader.php(66): _PHPStan_a355aaa14\Nette\DI\ContainerLoader->generate() #11 phar:///srv/share/vendor/phpstan/phpstan/phpstan.phar/vendor/nette/di/src/DI/ContainerLoader.php(34): _PHPStan_a355aaa14\Nette\DI\ContainerLoader->loadFile() #12 phar:///srv/share/vendor/phpstan/phpstan/phpstan.phar/src/DependencyInjection/Configurator.php(40): _PHPStan_a355aaa14\Nette\DI\ContainerLoader->load() #13 phar:///srv/share/vendor/phpstan/phpstan/phpstan.phar/vendor/nette/bootstrap/src/Bootstrap/Configurator.php(175): PHPStan\DependencyInjection\Configurator->loadContainer() #14 phar:///srv/share/vendor/phpstan/phpstan/phpstan.phar/src/DependencyInjection/ContainerFactory.php(81): _PHPStan_a355aaa14\Nette\Bootstrap\Configurator->createContainer() #15 phar:///srv/share/vendor/phpstan/phpstan/phpstan.phar/src/Command/CommandHelper.php(242): PHPStan\DependencyInjection\ContainerFactory->create() #16 phar:///srv/share/vendor/phpstan/phpstan/phpstan.phar/src/Command/AnalyseCommand.php(107): PHPStan\Command\CommandHelper::begin() #17 phar:///srv/share/vendor/phpstan/phpstan/phpstan.phar/vendor/symfony/console/Command/Command.php(259): PHPStan\Command\AnalyseCommand->execute() #18 phar:///srv/share/vendor/phpstan/phpstan/phpstan.phar/vendor/symfony/console/Application.php(856): _PHPStan_a355aaa14\Symfony\Component\Console\Command\Command->run() #19 phar:///srv/share/vendor/phpstan/phpstan/phpstan.phar/vendor/symfony/console/Application.php(259): _PHPStan_a355aaa14\Symfony\Component\Console\Application->doRunCommand() #20 phar:///srv/share/vendor/phpstan/phpstan/phpstan.phar/vendor/symfony/console/Application.php(157): _PHPStan_a355aaa14\Symfony\Component\Console\Application->doRun() #21 phar:///srv/share/vendor/phpstan/phpstan/phpstan.phar/bin/phpstan(94): _PHPStan_a355aaa14\Symfony\Component\Console\Application->run() #22 phar:///srv/share/vendor/phpstan/phpstan/phpstan.phar/bin/phpstan(95): _PHPStan_a355aaa14\{closure}() #23 /srv/share/vendor/phpstan/phpstan/phpstan(8): require('...') #24 /srv/share/vendor/bin/phpstan(117): include('...') #25 {main} thrown in /srv/share/vendor/reveal/reveal/packages/reveal-twig/src/Rules/NoTwigMissingVariableRule.php on line 20
Thanks for suggestion. Instead of this huge dependency, we should refactor from it. See the packages/symplify-rules directory here.
I'll give it a shot.
symplify/phpstan-rules
needs to be in the no-dev depedencies, because the rules extendAbstractSymplifyRule
(see Example).Without this change, running
vendor/bin/phpstan
with the following config causes an exception.