0b39884974
* Fix return value of LSP shutdown It is specified as a request that returns null. Returning void causes the language server to crash. * Fix empty responses of LSP textDocument/definition It is specified to return either a Location, an array of Locations, or null. Hovers are unrelated. * Fix responses of LSP textDocument/hover It is specified to either return Hover or null. Psalm could previously return a success response containing a MarkedString, but with a null value. MarkedString is not allowed to contain null. |
||
---|---|---|
.circleci | ||
assets | ||
bin | ||
build/phpunit | ||
docs | ||
examples | ||
src | ||
tests | ||
vendor-bin/box | ||
.appveyor.yml | ||
.editorconfig | ||
.gitattributes | ||
.gitignore | ||
.php_cs.dist | ||
.scrutinizer.yml | ||
.travis.yml | ||
box.json.dist | ||
CHANGELOG.md | ||
CODE_OF_CONDUCT.md | ||
composer.json | ||
config.xsd | ||
CONTRIBUTING.md | ||
infection.json.dist | ||
keys.asc.gpg | ||
LICENSE | ||
NEWS.md | ||
phpcs.xml | ||
phpunit.xml.dist | ||
psalm | ||
psalm-language-server | ||
psalm-plugin | ||
psalm-refactor | ||
psalm.xml.dist | ||
PsalmLogo.png | ||
psalter | ||
README.md | ||
scoper.inc.php |
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 of 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
Documentation is available on Psalm’s website, generated from the docs folder.
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.