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 supported17 Subscribers
Add a CodeTriage badge to psalm
Help out
- Issues
- Inherited property typed `T` leaks the child template when @extends passes `list<U>`
- Closure-typed generic property is read as unlocalized `Closure(T:Box as object)` after a call taking `Closure(T)` on the same object
- Nested `new Box(new Box(...))` passed to a `Box<Box<DateTime>>` parameter is not checked and keeps leaked type variables
- `class-string<Box<T>>` as an @extends argument keeps the child template when read through a concrete instance
- psr/log stub: LoggerInterface::log() contract cannot be met by a logger that casts a Stringable message
- Ship an agent skill for Psalm users
- Keep contributor skills out of installers that read the repository
- Number of errors found varies on --scan-threads
- fix(isset): keep the array value type when an ArrayAccess object is a union alternative
- Crash "Could not get class storage" when a nullable return signature has a docblock type alias imported from a class that is not scanned yet
- Docs
- PHP not yet supported