tomasvotruba / phpstan-bodyscan
Get error count for each PHPStan level
Fund package maintenance!
tomasvotruba
Installs: 14 949
Dependents: 1
Suggesters: 0
Security: 0
Stars: 127
Watchers: 3
Forks: 10
Open Issues: 6
Requires
- php: >=7.2
- phpstan/phpstan: ^1.11
README
- Do you want to get quick glimpse of new project code quality?
- Do you want to know, what PHPStan level is the best for your project?
- Do you want to know, how much errors you're facing per level to see how hard it will be to reach them?
Get error count for each PHPStan level!
How does it work?
First, we look into the project root for phpstan.neon
file.
- If found, we reuse it.
- If not, we look for defaults source code paths like
/src
,/app
,/tests
, etc.
Then we run PHPStan for each level from 0 to 8. We count errors and display them in a table.
Install
composer require tomasvotruba/phpstan-bodyscan --dev
Usage
Run tool in your project. It will take some time, as it will run full PHPStan analysis for each level.
vendor/bin/phpstan-bodyscan
↓
To get errors count per level:
+-------+-------------+-----------+ | Level | Error count | Increment | +-------+-------------+-----------+ | 0 | 0 | - | | 1 | 35 | + 35 | | 2 | 59 | + 24 | | 3 | 59 | - | | 4 | 120 | + 61 | | 5 | 120 | - | | 6 | 253 | + 133 | | 7 | 350 | + 97 | | 8 | 359 | + 9 | +-------+-------------+-----------;
Do you want to run levels including all ignored messages?
vendor/bin/phpstan-bodyscan --no-ignore
Do you want to run levels without extensions?
vendor/bin/phpstan-bodyscan --bare
Do you need a JSON format?
We got you covered:
vendor/bin/phpstan-bodyscan --json
↓
[ { "level": 0, "error_count": 0, "increment_count": 0 }, { "level": 1, "error_count": 5, "increment_count": 5 }, { "level": 2, "error_count": 25, "increment_count": 20 } ]
Limit level count
Are you interested only in a few levels? You can limit ranges by the options:
vendor/bin/phpstan-bodyscan run --min-level 0 --max-level 3
Measure type coverage
Experimental!
Are you interested in learning param, return and property type declaration coverage of the project?
Run type-coverage
command ↓
vendor/bin/phpstan-bodyscan type-coverage --json
↓
[ { "category": "param type", "relative_covered": 100, "total_count": 54 }, { "category": "property type", "relative_covered": 100, "total_count": 1 }, { "category": "return type", "relative_covered": 100, "total_count": 33 }, { "category": "strict declares", "relative_covered": 100, "total_count": 18 } ]
Based on type-coverage package.
Load env file
Some projects need to load .env
file to run PHPStan. You can do it like this:
vendor/bin/phpstan-bodyscan run --env-file some-parameters.env
Debugging
Running PHPStan on a new project you don't know might crash. To save data from finished levels, we dump them to the bodyscan-log.txt
file.
If the run crashes for any reason, the PHPStan error output is also dumped to the same file.
Happy coding!