Comprehensive collection of QA tools and code quality standards for PHP 8.2+ projects. Provides configurations and wrappers for PHPStan, Psalm, PHP-CS-Fixer, PHPUnit, PHPMD, Phan and other popular code analysis tools.
- PHP 8.2+ - Modern PHP version with strict typing support
- Composer - For dependency management
- Make - Build automation tool
composer require --dev jbzoo/codestyleAdd the following to your project's Makefile to get access to all QA tools:
ifneq (, $(wildcard ./vendor/jbzoo/codestyle/src/init.Makefile)) include ./vendor/jbzoo/codestyle/src/init.Makefile endif update: ##@Project Install/Update all 3rd party dependencies $(call title,"Install/Update all 3rd party dependencies") @echo "Composer flags: $(JBZOO_COMPOSER_UPDATE_FLAGS)" @composer update $(JBZOO_COMPOSER_UPDATE_FLAGS) test-all: ##@Project Run all project tests at once @make test @make codestyleThis package includes configurations for:
- PHPStan - Static analysis tool with strict rules
- Psalm - Advanced static analysis with type coverage
- PHP-CS-Fixer - Code style fixer with PSR-12 and custom rules
- PHPCS - Code sniffer for PSR-12 and PHP compatibility
- PHPMD - Mess detector for code quality issues
- PHPUnit - Unit testing framework with coverage reporting
- Phan - Super strict static analyzer
- PHPMND - Magic number detector
- PHPCPD - Copy-paste detector
make update # Install/update dependencies make autoload # Dump optimized autoloader make clean # Cleanup build directorymake test # Run PHPUnit tests make test-all # Run all tests and code style checks make codestyle # Run all code style lintersmake test-phpstan # Static analysis with PHPStan make test-psalm # Static analysis with Psalm make test-phpcs # Code sniffer (PSR-12 + compatibility) make test-phpcsfixer # Check PHP-CS-Fixer rules make test-phpcsfixer-fix # Auto-fix with PHP-CS-Fixer make test-phpmd # Mess detector make test-phan # Phan static analyzermake report-all # Generate all reports make report-phpmetrics # PHP Metrics report make report-pdepend # PHP Depend reportUsage: - `make [target]` - `make [target] OPTION=value` - `ENV_VAR=value make [target]` Misc: help Show this text list Full list of targets Project: autoload Dump optimized autoload file for PHP build-phar Compile phar file clean Cleanup only build directory clean-vendor Cleanup all test-all Run all project tests at once update Install/Update all 3rd party dependencies Tests: codestyle Launch all codestyle linters at once test Launch PHPUnit Tests (alias "test-phpunit") test-composer Validates composer.json and composer.lock test-composer-reqs Checks composer.json the defined dependencies against your code test-performance Run benchmarks and performance tests test-phan Phan - super strict static analyzer for PHP test-phpcpd PHPcpd - Find obvious Copy&Paste test-phpcs PHPcs - Checking PHP Code Sniffer (PSR-12 + PHP Compatibility) test-phpcsfixer PhpCsFixer - Check code to follow stylish standards test-phpcsfixer-fix PhpCsFixer - Auto fix code to follow stylish standards test-phpmd PHPmd - Mess Detector Checker test-phpmd-strict PHPmd - Mess Detector Checker (strict mode) test-phpmnd PHPmnd - Magic Number Detector test-phpstan PHPStan - Static Analysis Tool test-phpunit PHPUnit - Launch General Tests test-psalm Psalm - static analysis tool for PHP Reports: report-all Build all reports at once report-composer-diff What has changed after a composer update report-composer-graph Build composer graph of dependencies report-coveralls Send coverage report to coveralls.io report-merge-coverage Merge all coverage reports in one clover file report-pdepend Build PHP Depend Report report-performance Build performance summary report report-phploc PHPloc - Show code stats report-phpmetrics Build PHP Metrics Report update-extend Checks new compatible versions of 3rd party libraries Trick: Add into your "~/.bash_aliases" the line "complete -W "\`make list\`" make" to use TAB The package provides configurations that work seamlessly with:
- PhpStorm - Built-in support for all tools
- VS Code - Extensions available for all included tools
- Vim/Neovim - LSP support through various plugins
Extend the base configuration in your .php-cs-fixer.php:
use JBZoo\Codestyle\PhpCsFixer\PhpCsFixerCodingStandard; return (new PhpCsFixerCodingStandard(__DIR__)) ->addCustomRules([ 'your_custom_rule' => true, ]) ->getFixerConfig();Use the provided base test classes for consistent testing:
use JBZoo\Codestyle\PHPUnit\AbstractPackageTest; class YourPackageTest extends AbstractPackageTest { protected string $packageName = 'your-package-name'; }Contributions are welcome! Please ensure:
- All tests pass:
make test-all - Code follows our standards:
make codestyle - Coverage remains high:
make report-all
MIT License. See LICENSE file for details.