Apply automatic fixes on your Drupal 8 code.
Check it in action on Travis CI.
Install the library.
$ composer require --dev drupal8-rector/drupal8-rector
Create a rector.yml file in the Drupal 8 root.
imports:
- { resource: "%vendor_dir%/drupal8-rector/drupal8-rector/config/drupal8.yml" }
- { resource: "%vendor_dir%/drupal8-rector/drupal8-rector/config/drupal86-deprecations.yml" }
# Import drupal8-php71.yml ruleset if your module's minimum requirement
# is PHP >= 7.1.
# - { resource: "%vendor_dir%/drupal8-rector/drupal8-rector/config/drupal8-php71.yml" }
# Enable EXPERIMENTAL rectors.
# - { resource: "%vendor_dir%/drupal8-rector/drupal8-rector/config/drupal8-experimental.yml" }
parameters:
autoload_paths:
- 'web/core/modules'
- 'web/modules'
exclude_paths:
- '*/tests/*'
- '*/Tests/*'
services:
# Optionally enable ReturnTypeDeclarationRector rector if your
# code is PHP >= 7.1 compatible. It is disabled by default
# because it may cause problems.
# Drupal8Rector\Rector\FunctionLike\ReturnTypeDeclarationRectorProxy: ~
- Analyze your code with Rector and review suggested changes:
$ vendor/bin/rector process web/modules/contrib/[YOUR_MODULE] --dry-run
- Apply suggested changes:
$ vendor/bin/rector process web/modules/contrib/[YOUR_MODULE]
- Automatically correct code style violations with PHPCBF:
$ vendor/bin/phpcbf --standard=web/core/phpcs.xml.dist web/modules/contrib/[YOUR_MODULE] -s --colors
- Look for remaining code style violations with PHPCS:
$ vendor/bin/phpcs --standard=web/core/phpcs.xml.dist web/modules/contrib/[YOUR_MODULE] -s --colors
- Run automated tests to ensure the optimized code is still correct:
$ vendor/bin/phpunit -c web/core --printer="\Drupal\Tests\Listeners\HtmlOutputPrinter" -v --debug web/modules/contrib/[YOUR_MODULE]/tests
You can find more information about Rector here.
- Rector conflict with the PHPUnit version (^6.5 required by webflo/drupal-core-require-dev package) on the required minimum version from sebastian/diff package. Possible solution: temporarily remove webflo/drupal-core-require-dev package while you are testing this library.
This is just a POC at this moment but it has a great potential to become an actual development tool for Drupal 8.
Do you have an idea about what else this tool could do? Please share it in the issue queue. Pull requests are also warmly welcomed!
Initial development is sponsored by Pronovix.