Last active
February 16, 2023 01:18
-
-
Save dantleech/84d82659583e55d0ffeb48d36d27a9fc to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
use Symfony\Component\HttpFoundation\Request; | |
use Drupal\Core\DrupalKernel; | |
$autoload = require __DIR__ . '/vendor/autoload.php'; | |
$cwd = getcwd(); | |
chdir('docroot'); | |
$drupalKernel = DrupalKernel::createFromRequest( | |
Request::createFromGlobals(), | |
$autoload, | |
'dev', | |
true, | |
__DIR__ | |
); | |
$drupalKernel->boot(); | |
$drupalKernel->getContainer()->get('module_handler')->loadAll(); | |
chdir($cwd); | |
return $autoload; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
parameters: | |
bootstrap: ./drupal_phpstan_autoload.php | |
ignoreErrors: | |
- '#Function pager_.*#' | |
- ... ignore some other errors here, not _all_ functions are registered in the bootstrap |
I resolved the above by adding:
autoload_directories:
- %rootDir%/../../../web/modules/custom
to the parameters in phpstan.neon.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Thank you for this. It's a good starting point.
I'm trying to use it to run phpstan against our custom drupal modules, adapted for our folder paths. My commandline looks like this:
vendor/bin/phpstan analyse -c build/phpstan.neon web/modules/custom --level=4
However, I'm still getting errors on most (but not all?) of my custom module classes telling me that
<classname> was not found while trying to analyse it - autoloading is probably not configured properly.
.This bootstrap does set up autoloading, but I looked at the autoloader and it doesn't seem to know about the modules folder. Do I need to add something else?