PHPStan is a PHP static analysis tool that focuses on finding errors in your code without actually running it. It catches whole classes of bugs even before you write tests for the code. It moves PHP closer to compiled languages in the sense that the correctness of each line of the code can be checked before you run the actual line.
Supported features actually includes :
- Existence of classes and interfaces in
catch, typehints, other language constructs and even annotations. PHP does not do this and just stays silent instead.
- Existence of variables while respecting scopes of branches and loops.
- Existence and visibility of called methods and functions.
- Existence and visibility of accessed properties and constants.
- Correct types assigned to properties.
- Correct number and types of parameters passed to constructors, methods and functions.
- Correct types returned from methods and functions.
- Correct number of parameters passed to
printfcalls based on format strings.
- Useless casts like
- Unused constructor parameters – they can either be deleted or the author forgot to use them in the class code.
- That only objects are passed to the
PHPStan requires PHP >= 7.0 and could be extended using Doctrine, Nette and Dibi. You can get it using composer :
composer require --dev phpstan/phpstan
For more information https://github.com/phpstan/phpstan