Psalm's function signature map was based on an old ad hoc sorting order (Possibly the unix sorting utility?) Instead, sort by `strtolower(str_replace("'", "\x0", $functionKey))` (To group classes together, and global functions together, and alternates together, instead of mixing them) `phan/phan/internal/internalsignatures.php sort` was used to perform this sorting (It's hardcoded to expect src/Phan/Internal/FunctionSignatureMap.php, though) Other changes: - Add signature for `_()`, which is an alias of gettext() https://secure.php.net/manual/en/function.gettext.php#refsect1-function.gettext-notes - etsy/phan -> phan/phan - Mention that __construct has type void, not the class name. - nit: Change __halt_compiler to void.
Psalm is a static analysis tool for finding errors in PHP applications, built on top of PHP Parser.
It's able to find a large number issues, but it can also be configured to only care about a small subset of those.
Try a live demo, or install it in your project by following the Quickstart Guide below.
Psalm documentation
All the documentation for Psalm is found in the docs folder - the index is located here,
Quickstart Guide
Install via Composer:
composer require --dev vimeo/psalm
Add a config:
./vendor/bin/psalm --init
Then run Psalm:
./vendor/bin/psalm
The config created above will show you all issues in your code, but will emit INFO
issues (as opposed to ERROR
) for certain common trivial code problems. If you want a more lenient config you can specify the level with
./vendor/bin/psalm --init [source_dir] [level]
You can also learn how to suppress certain issues.
How Psalm Works
A basic rundown of Psalm’s internals can be found in docs/how_psalm_works.md.
Acknowledgements
The engineering team @vimeo for encouragement and patience, especially @nbeliard, @erunion and @nickyr.