bear / qatools
PHP QA Tools
Requires
- php: ^7.4 || ^8.0
- doctrine/coding-standard: ^9 || ^10.0 || ^11.0 || ^12.0 || ^13.0 || ^14.0
- friendsofphp/php-cs-fixer: ^3.4
- phpmd/phpmd: ^2.11
- phpmetrics/phpmetrics: ^2.7
- phpstan/phpstan: ^2.1
- phpunit/phpunit: ^9.6 || ^10.5 || ^11.3 || ^12.0
- squizlabs/php_codesniffer: ^3.5
- vimeo/psalm: ^4.2 || ^5.25 || ^6.11 || 6.x-dev as 6.14
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
- dev-master
- 1.13.0
- 1.12.0
- 1.11.0
- 1.10.0
- 1.9.12
- 1.9.11
- 1.9.10
- 1.9.9
- 1.9.8
- 1.9.7
- 1.9.6
- 1.9.5
- 1.9.4
- 1.9.3
- 1.9.2
- 1.9.1
- 1.9.0
- 1.8.0
- 1.7.3
- 1.7.2
- 1.7.1
- 1.7.0
- 1.6.1
- 1.6.0
- 1.5.0
- 1.4.9
- 1.4.8
- 1.4.7
- 1.4.6
- 1.4.5
- 1.4.4
- 1.4.3
- 1.4.2
- 1.4.1
- 1.4.0
- 1.3.0
- 1.2.0
- 1.1.2
- 1.0.6
- 1.0.5
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0
- dev-claude/improvement-ideas-3q6bny
This package is auto-updated.
Last update: 2026-09-15 06:26:28 UTC
README
Collection of commonly used PHP QA tools.
Included in this package are:
- phpunit/phpunit The PHP Unit Testing framework.
- phpmd/phpmd PHPMD is a spin-off project of PHP Depend and aims to be a PHP equivalent of the well known Java tool PMD.
- squizlabs/php_codesniffer PHP_CodeSniffer tokenises PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.
- doctrine/coding-standard The PHP_CodeSniffer ruleset the bundled
phpcs.xmlbuilds on. - phpstan/phpstan A PHP Static Analysis Tool.
- vimeo/psalm A static analysis tool for PHP.
- phpmetrics/phpmetrics Static analysis tool for PHP.
Installation
Global install
composer global require bear/qatools
Local install
composer require --dev bear/qatools
QA Configs
cp vendor/bear/qatools/phpcs.xml .
cp vendor/bear/qatools/phpmd.xml .
cp vendor/bear/qatools/phpstan.neon .
psalm --init
For PHPUnit, copy the template matching your PHPUnit major version:
# PHPUnit 9
cp vendor/bear/qatools/phpunit.xml.dist phpunit.xml
# PHPUnit 10, 11 or 12
cp vendor/bear/qatools/phpunit10.xml.dist phpunit.xml
PHPUnit 10 replaced the configuration schema, and the two are not interchangeable —
phpunit.xml.dist triggers a deprecation notice on PHPUnit 10 and later, while
phpunit10.xml.dist is rejected by PHPUnit 9. PHPUnit 9 remains supported because
PHPUnit 10, 11 and 12 require PHP 8.1, 8.2 and 8.3 respectively, so it is the only
line installable on PHP 7.4 and 8.0.
CI Configs
cp vendor/bear/qatools/.scrutinizer.yml .
Usage
Composer Scripts
Composer does not inherit scripts from dependencies, so copy the scripts block from
vendor/bear/qatools/composer.json into your own composer.json to get these:
composer tests # Run cs, sa, and test in sequence
composer test # Run PHPUnit tests
composer cs # Run PHP_CodeSniffer
composer cs-fix # Auto-fix coding standard violations with phpcbf
composer sa # Run all static analysis (phpstan, psalm, phpmd)
composer coverage # Generate test coverage report
composer metrics # Generate PHPMetrics HTML report
Direct Commands
phpunit
phpunit
phpcs
phpcs --standard=./phpcs.xml src
phpstan
phpstan analyse -c phpstan.neon
psalm
psalm
phpmd
phpmd src text ./phpmd.xml
phpmetrics
phpmetrics --report-html=build/metrics src
Code Standards
- PSR-12 base with Doctrine Coding Standard
- PHPStan level: max, over
srcandtests - Psalm errorLevel: 1, over
srconly - PHP compatibility: 7.4+
Psalm is deliberately kept off tests: errorLevel 1 is too strict for test code,
where rules such as ClassMustBeFinal work against normal PHPUnit practice.
UnusedClass is suppressed as a consequence — with only src analysed, a class
reached through the framework or used only from tests looks unused. Test code is
still covered by phpcs and PHPStan.