Analyses and produces a report with testability issues of a php codebase.
PHP_Testability requires at least PHP 7.0 to run.
Add edsonmedina/php_testability
as a dependency to your project's composer.json
file if you use Composer to manage the dependencies of your project.
{
"require-dev": {
"edsonmedina/php_testability": "dev-master"
}
}
And run composer update
.
Or alternatively, just run:
composer require edsonmedina/php_testability "dev-master"
Analyse the current directory and generate an HTML report into report/
vendor/bin/testability . -o report
Exclude some directories
vendor/bin/testability . -x vendor,tmp,upload,config -o report
Check all the available options.
vendor/bin/testability --help
Open report/index.html on your browser. You shoule see something like this:
If you click on a file with issues, it'll show you a code browser and will highlight the lines with issues.
These are issues that hinder testability, such as:
- references to global variables, super globals, etc
- calls to functions that can't be mocked (like static methods or global functions)
new
instances of objects (tight coupling - can't be mocked/injected)- ...and much more
Kudos to the brilliant PHP-Parser (by nikic) on which PHP_Testability relies heavily.