webifycms / dev-tools
Set of development tools to analyze and auto fix code standards, formatting and other stuffs for WebifyCMS packages.
Requires
- php: >=8.4
- friendsofphp/php-cs-fixer: ^3.0
- phpstan/phpstan: ^2.0
- phpstan/phpstan-deprecation-rules: ^2.0
- phpstan/phpstan-phpunit: ^2.0
- phpstan/phpstan-strict-rules: ^2.0
- rector/rector: ^2.0
- symfony/var-dumper: ^8.1
Requires (Dev)
- phpunit/phpunit: ^13
- roave/security-advisories: dev-latest
README
Set of development tools to analyze and auto-fix code standards, formatting and other stuff for WebifyCMS packages.
The following libraries are included:
friendsofphp/php-cs-fixerphpstan/phpstanrector/rectorsymfony/var-dumper
Installation
Install via composer
composer require webifycms/dev-tools --dev
Configuration
- PHP CS Fixer
You can add the rules and finder instance in the following way to your config file .php-cs-fixer.php:
use Webify\Tools\Fixer; use PhpCsFixer\Finder; // create a finder instance according to your needs $finder = Finder::create()->in(__DIR__ . '/src'); // add the rules and it will override the defaults $rules = []; return (new Fixer($finder, $rules))->getConfig();
- PHPStan
Add phpstan.neon in the root directory, and include the default config like below:
includes: - vendor/webifycms/dev-tools/phpstan-default.neon
- Rector
Add rector.php in the root directory and the following, if you need to add more paths, you can add them as well:
use Webify\Tools\Rector; // Initialize return (new Rector()) ->initialize([ __DIR__ . '/src', __DIR__ . '/test' ]) ->withPhpSets(php81: true);
Usage
- Analyze your code first with PHPStan static analyzer for errors and fix (manual fix):
vendor/bin/phpstan analyse [options] [<paths>...]
Additionally, add the following to your phpstan.neon file to enable installed PHPStan extensions:
includes: - vendor/phpstan/phpstan-strict-rules/rules.neon - vendor/phpstan/phpstan-phpunit/extension.neon - vendor/phpstan/phpstan-deprecation-rules/rules.neon
- Run code sniffer and format your codes.
(Recommended) If you wish to fix manually, you can just output the rules that will apply like the following.
./vendor/bin/php-cs-fixer fix --verbose --diff --show-progress=dots --dry-run
If you wish to auto-fix the files and output the summary of changes, you can run the following.
./vendor/bin/php-cs-fixer fix --verbose --show-progress=dots
Upgrade code with RectorPHP
# to output the changes only ./vendor/bin/rector process --dry-run # to make the changes ./vendor/bin/rector process
Debugging
The symfony/var-dumper package is included and provides the dump() and dd() helper functions for inspecting
variables during development.
e.g. use dump() within your .php-cs-fixer.php or rector.php config files to inspect the resolved configuration:
use Webify\Tools\Fixer; use PhpCsFixer\Finder; $finder = Finder::create()->in(__DIR__ . '/src'); $config = (new Fixer($finder))->getConfig(); // Inspect the merged rules before returning dump($config->getRules()); return $config;
e.g. use dd() function (dump and die) to halt execution after dumping:
$config = (new Fixer($finder))->getConfig(); dd($config->getRules());
Testing
Run unit tests with PHPUnit:
vendor/bin/phpunit
NOTE: You can also set up this extension with your favorite IDE or editor, so you can get more advantages like format on save while developing.
TODO
- Install
phpstan/phpstanlibrary. - Install Rector
rector/rectorlibrary. - Add alias commands for the library commands, like the following:
# ./vendor/bin/php-cs-fixer fix --verbose --diff --show-progress=dots --dry-run composer sniff # ./vendor/bin/php-cs-fixer fix --verbose --show-progress=dots composer code-format # ./vendor/bin/phpstan composer analyse
- Add support to pass arguments to the alias commands.