jbzoo/codestyle

Collection of QA tools and JBZoo code standards

Maintainers

👁 smetdenis

Package info

github.com/JBZoo/Codestyle

pkg:composer/jbzoo/codestyle

Statistics

Installs: 1 113 281

Dependents: 5

Suggesters: 0

Stars: 1

Open Issues: 0

7.2.0 2025-09-28 11:14 UTC

Requires (Dev)

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT e13d75253f6a8560f11d9f01e86c0f8da1c8fe70

  • Denis Smetannikov <admin.woop@jbzoo.com>

phpphpunittestsphpcsqaphpmdphp-cs-fixerphpmetricsjbzooCodestylecoding-standardPHPStanphanpsalmphpcompatibility


README

👁 CI
👁 Coverage Status
👁 Psalm Coverage
👁 Psalm Level
👁 CodeFactor

👁 Stable Version
👁 Total Downloads
👁 Dependents
👁 GitHub License

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.

Requirements

  • PHP 8.2+ - Modern PHP version with strict typing support
  • Composer - For dependency management
  • Make - Build automation tool

Installation

composer require --dev jbzoo/codestyle

Quick Start

Add 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 codestyle

Available Tools

This 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

Common Commands

Development

make update # Install/update dependencies
make autoload # Dump optimized autoloader
make clean # Cleanup build directory

Testing

make test # Run PHPUnit tests
make test-all # Run all tests and code style checks
make codestyle # Run all code style linters

Individual QA Tools

make 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 analyzer

Reports

make report-all # Generate all reports
make report-phpmetrics # PHP Metrics report
make report-pdepend # PHP Depend report

Complete Command Reference

Usage:
 - `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

Integration with IDEs

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

Advanced Usage

Custom PHP-CS-Fixer Rules

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();

PHPUnit Base Classes

Use the provided base test classes for consistent testing:

use JBZoo\Codestyle\PHPUnit\AbstractPackageTest;

class YourPackageTest extends AbstractPackageTest
{
 protected string $packageName = 'your-package-name';
}

Contributing

Contributions are welcome! Please ensure:

  1. All tests pass: make test-all
  2. Code follows our standards: make codestyle
  3. Coverage remains high: make report-all

License

MIT License. See LICENSE file for details.