psalm
https://github.com/vimeo/psalm
PHP
A static analysis tool for finding errors in PHP applications
Triage Issues!
When you volunteer to triage issues, you'll receive an email each day with a link to an open issue that needs help in this project. You'll also receive instructions on how to triage issues.
Triage Docs!
Receive a documented method or class from your favorite GitHub repos in your inbox every day. If you're really pro, receive undocumented methods or classes and supercharge your commit history.
PHP not yet supported18 Subscribers
Add a CodeTriage badge to psalm
Help out
- Issues
- Don't pin a return type variable to every arm of a union return
- Report native symbols used below the PHP version that introduced them
- Cold-cache scan crashes on PHP >= 8.3: AST serialize() in parallel worker fiber exceeds ~2 MiB fiber call-stack limit ("Infinite recursion?")
- Template argument lost when a `ReflectionClass<T>` built from `class-string<T>` is passed to a generic method (regression in 6.17.0)
- Resolve class-template type variables at read sites; fix deferred-model regressions
- Uncaught TypeParseTreeException: an unparseable `@self-out` / `@this-out` type crashes the scan phase
- [7.x] Taint: one of two flows into the same sink is dropped when one path is longer (visited guard also suppresses reporting)
- [6.x] Report InvalidDocblock instead of crashing on unparseable `@self-out` / `@if-this-is` types
- [7.x] Report every taint flow into a sink, not just the first to arrive
- [6.x] Throw `TypeParseTreeException` for an incomplete conditional type
- Docs
- PHP not yet supported