palpalani / grumphp-rector-task
RectorPhp task runner from GrumPHP
Installs: 70 504
Dependents: 0
Suggesters: 0
Security: 0
Stars: 5
Watchers: 2
Forks: 0
Open Issues: 1
Requires
- php: >=7.4
- phpro/grumphp: ^1.13
- rector/rector: ^0.15
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- laravel/pint: ^1.1
- nunomaduro/collision: ^6.2
- nunomaduro/larastan: ^2.1
- orchestra/testbench: ^6.15|^7.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpunit/phpunit: ^8.4|^9.3
README
This package extends GrumPHP with a task that runs RectorPHP for your Laravel projects or any PHP application.
Note that we have added --dry-run
option, so the source code never changed.
Installation
The easiest way to install this package is through composer:
composer require --dev palpalani/grumphp-rector-task
Config
Add the extension loader to your grumphp.yml
or grumphp.yml.dist
.
The task lives under the rector
namespace and has following
configurable parameters:
# grumphp.yml grumphp: tasks: rector: whitelist_patterns: [] config: 'rector.php' triggered_by: ['php'] clear-cache: false ignore_patterns: [] no-progress-bar: false files_on_pre_commit: false paths: [] no_diffs: false extensions: - palPalani\GrumPhpRectorTask\ExtensionLoader
By default, this won't update your code, you need to do it manually.
whitelist_patterns
Default: []
If you want to run on particular directories only, specify it with this option.
config
Default: 'rector.php'
If you want to use a different config file than the default rector.php
, you can specify your custom config file location with this option.
triggered_by
Default: [php]
This option will specify which file extensions will trigger this task.
clear-cache
Default: false
Clear cache for already checked files.
no-progress-bar
Default: false
Hide progress bar. Useful e.g. for nicer CI output.
files_on_pre_commit
Default: false
This option makes it possible to use the changed files as paths during pre-commits. It will use the paths option to make sure only committed files that match the path are validated.
no_diff
Default: false
Sample RectorPhp configuration
Create rector.php
in your project root and configure as follows. This example file iam using for my Laravel project, but you can use library with any PHP project. Also you no need to set all these settings, Please add or remove as per your requirements.
<?php declare(strict_types=1); use Rector\Core\Configuration\Option; use Rector\Set\ValueObject\SetList; use Rector\CodeQuality\Rector\If_\SimplifyIfReturnBoolRector; use Rector\Config\RectorConfig; use Rector\Php74\Rector\Property\TypedPropertyRector; use Rector\CodeQuality\Rector\Isset_\IssetOnPropertyObjectToPropertyExistsRector; return static function (RectorConfig $rectorConfig): void { $rectorConfig->parallel(); $rectorConfig->paths([ __DIR__ . '/app', __DIR__ . '/config', __DIR__ . '/database', __DIR__ . '/tests' __DIR__ . '/routes', ]); $rectorConfig->skip([ IssetOnPropertyObjectToPropertyExistsRector::class, __DIR__ . '/app/Http/Middleware/*', ]); $rectorConfig->rules([ ReturnTypeFromStrictBoolReturnExprRector::class, //ReturnTypeFromStrictNativeFuncCallRector::class, ReturnTypeFromStrictNewArrayRector::class, ReturnTypeFromStrictScalarReturnExprRector::class, ReturnTypeFromReturnNewRector::class, ]); $rectorConfig->sets([ SetList::CODE_QUALITY, SetList::CODING_STYLE, SetList::DEAD_CODE, SetList::TYPE_DECLARATION, SetList::EARLY_RETURN, SetList::PHP_81, LevelSetList::UP_TO_PHP_80, ]); $rectorConfig->sets([ LaravelSetList::LARAVEL_CODE_QUALITY, LaravelSetList::LARAVEL_90, LaravelLevelSetList::UP_TO_LARAVEL_80, ]); };
Please visit RectorPhp for more configuration examples.
Uninstall
If you want to uninstall this extension remove configuration files first: rector.php
from your application.
then remove package:
composer remove palpalani/grumphp-rector-task
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
Versioning
We use SemVer for versioning. For the versions available, see the tags on this repository.
Credits
License
The MIT License (MIT). Please see License File for more information.
Todo
- Add memory restriction
- Add more tests
- xdebug