У меня есть проект, построенный на Symfony 3.4 с Flex, и я добавил к нему phpstan для статического анализа.
Он жалуется на то, что не нашел мои классы миграции:
Class DoctrineMigrations\Version20180831185050 was not found while trying to analyse it - autoloading is probably not configured properly.
Действительно, файлы, созданные с помощью Doctrine Migrations, не подходят для шаблона автозагрузки, но в остальном работают нормально.
Что я могу сделать, чтобы перестать жаловаться на это?




Можно исключить файлы из анализа
Создайте файл конфигурации phpstan.neon в каталоге проекта и вставьте:
parameters:
excludes_analyse:
- %currentWorkingDirectory%/src/DoctrineMigrations/*
Каждый файл в каталоге src/DoctrineMigrations будет исключен из анализа.
Лучше включать с autoload_directories, чем исключать, как в ответе @ ondřej-mirtes
Вы можете добавить каталог с миграциями в автозагрузчик Composer, или предпочтительно добавить его в autoload_directories в phpstan.neon:
parameters:
autoload_directories:
- src/Migrations
Дополнительные сведения см. В разделе Автозагрузка в документации PHPStan.
Хм, не уверен в этом. Если вы посмотрите на config/packages/doctrine_migrations.yaml, разработчики Symfony оставили комментарий "# namespace is arbitrary but should be different from App\Migrations as migrations classes should NOT be autoloaded".
@agoldev Хотя в контексте приложения да, они не должны загружаться автоматически, чтобы предотвратить их случайное выполнение, в случае PhpStan вы хотите запустить для них проверки, чтобы убедиться, что они синтаксически правильны. Поэтому вы добавляете их в PhpStan Только
Это сработало, но с Flex каталог - src / Migrations, без Doctrine в имени.