hungthai1401 / rector
任何PHP代码的即时升级和自动化重构
资助包维护!
tomasvotruba
Requires
- php: ^7.2|^8.0
- phpstan/phpstan: ^1.9.6
- 0.15.2.1
- 0.15.2
- 0.15.1
- 0.15.0
- dev-main / 0.14.x-dev
- 0.14.8
- 0.14.7
- 0.14.6
- 0.14.5
- 0.14.4
- 0.14.3
- 0.14.2
- 0.14.1
- 0.14.0
- 0.13.10
- 0.13.9
- 0.13.8
- 0.13.7
- 0.13.6
- 0.13.5
- 0.13.4
- 0.13.3
- 0.13.2
- 0.13.1
- 0.13.0
- 0.12.23
- 0.12.22
- 0.12.21
- 0.12.20
- 0.12.19
- 0.12.18
- 0.12.17
- 0.12.16
- 0.12.15
- 0.12.14
- 0.12.13
- 0.12.12
- 0.12.11
- 0.12.10
- 0.12.9
- 0.12.8
- 0.12.7
- 0.12.6
- 0.12.5
- 0.12.4
- 0.12.3
- 0.12.2
- 0.12.1
- 0.12.0
- 0.11.60
- 0.11.59
- 0.11.58
- 0.11.57
- 0.11.56
- 0.11.55
- 0.11.54
- 0.11.53
- 0.11.52
- 0.11.51
- 0.11.50
- 0.11.49
- 0.11.48
- 0.11.47
- 0.11.46
- 0.11.45
- 0.11.44
- 0.11.43
- 0.11.42
- 0.11.41
- 0.11.40
- 0.11.39
- 0.11.38
- 0.11.37
- 0.11.36
- 0.11.35
- 0.11.34
- 0.11.33
- 0.11.32
- 0.11.31
- 0.11.30
- 0.11.29
- 0.11.28
- 0.11.27
- 0.11.26
- 0.11.25
- 0.11.24
- 0.11.23
- 0.11.21
- 0.11.20
- 0.11.19
- 0.11.18
- 0.11.17
- 0.11.16
- 0.11.15
- 0.11.14
- 0.11.13
- 0.11.12
- 0.11.11
- 0.11.10
- 0.11.9
- 0.11.8
- 0.11.7
- 0.11.6
- 0.11.5
- 0.11.4
- 0.11.3
- 0.11.2
- 0.11.1
- 0.11.0
- 0.10.20
- 0.10.19
- 0.10.18
- 0.10.17
- 0.10.16
- 0.10.15
- 0.10.14
- 0.10.13
- 0.10.12
- 0.10.11
- 0.10.10
- 0.10.9
- 0.10.8
- 0.10.7
- 0.10.6
- 0.10.5
- 0.10.4
- 0.10.3
- 0.10.2
- 0.10.1
- 0.10.0
- 0.9.33
- 0.9.32
- 0.9.31
- 0.9.30
- 0.9.29
- 0.9.28
- 0.9.27
- 0.9.26
- 0.9.25
- 0.9.24
- 0.9.23
- 0.9.22
- 0.9.21
- 0.9.20
- 0.9.19
- 0.9.18
- 0.9.17
- 0.9.16
- 0.9.15
- 0.9.14
- 0.9.13
- 0.9.12
- 0.9.11
- 0.9.10
- 0.9.9
- 0.9.8
- 0.9.7
- 0.9.6
- 0.9.5
- 0.9.4
- 0.9.3
- 0.9.2
- 0.9.1
- 0.9.0
- 0.8.56
- 0.8.55
- 0.8.54
- 0.8.53
- 0.8.52
- 0.8.51
- 0.8.50
- 0.8.49
- 0.8.48
- 0.8.47
- 0.8.46
- 0.8.45
- 0.8.44
- 0.8.43
- 0.8.42
- 0.8.41
- 0.8.40
- 0.8.39
- 0.8.38
- 0.8.37
- 0.8.36
- 0.8.35
- 0.8.34
- 0.8.33
- 0.8.32
- 0.8.31
- 0.8.30
- 0.8.29
- 0.8.28
- 0.8.27
- 0.8.26
- 0.8.25
- 0.8.24
- 0.8.23
- 0.8.22
- 0.8.21
- 0.8.20
- 0.8.19
- 0.8.18
- 0.8.17
- 0.8.16
- 0.8.15
- 0.8.14
- 0.8.13
- 0.8.12
- 0.8.11
- 0.8.10
- 0.8.9
- v0.8.8
- v0.8.7
- v0.8.6
- v0.8.5
- v0.8.4
- v0.8.3
- v0.8.2
- v0.8.1
- v0.8.0
- v0.7.65
- v0.7.64
- v0.7.63
- v0.7.62
- v0.7.61
- v0.7.60
- v0.7.59
- v0.7.58
- v0.7.57
- v0.7.56
- v0.7.55
- v0.7.54
- v0.7.53
- v0.7.52
- v0.7.51
- v0.7.50
- v0.7.49
- v0.7.48
- v0.7.47
- v0.7.46
- v0.7.45
- v0.7.44
- v0.7.43
- v0.7.42
- v0.7.41
- v0.7.40
- v0.7.39
- v0.7.38
- v0.7.37
- v0.7.36
- v0.7.35
- v0.7.34
- v0.7.33
- v0.7.32
- v0.7.31
- v0.7.30
- v0.7.29
- v0.7.28
- v0.7.27
- v0.7.26
- v0.7.25
- v0.7.24
- v0.7.23
- v0.7.22
- v0.7.21
- v0.7.20
- v0.7.19
- v0.7.18
- v0.7.17
- v0.7.16
- v0.7.15
- v0.7.14
- v0.7.13
- v0.7.12
- v0.7.11
- v0.7.10
- v0.7.9
- v0.7.8
- v0.7.7
- v0.7.6
- v0.7.5
- v0.7.4
- v0.7.3
- v0.7.2
- v0.7.1
- v0.7.0
- v0.6.14
- v0.6.13
- v0.6.12
- v0.6.11
- v0.6.10
- v0.6.9
- v0.6.8
- v0.6.7
- v0.6.6
- v0.6.5
- v0.6.4
- v0.6.3
- v0.6.2
- v0.6.1
- v0.6.0
- v0.5.23
- v0.5.22
- v0.5.21
- v0.5.20
- v0.5.19
- v0.5.18
- v0.5.17
- v0.5.16
- v0.5.15
- v0.5.14
- v0.5.13
- v0.5.12
- v0.5.11
- v0.5.10
- v0.5.9
- v0.5.8
- v0.5.7
- v0.5.6
- v0.5.5
- v0.5.4
- v0.5.3
- v0.5.2
- v0.5.1
- v0.5.0
- v0.4.12
- v0.4.11
- v0.4.10
- v0.4.9
- v0.4.8
- v0.4.7
- v0.4.6
- v0.4.5
- v0.4.4
- v0.4.3
- v0.4.2
- v0.4.1
- v0.4.0
- v0.3.44
- v0.3.43
- v0.3.42
- v0.3.41
- v0.3.40
- v0.3.39
- v0.3.38
- v0.3.37
- v0.3.36
- v0.3.35
- v0.3.34
- v0.3.33
- v0.3.32
- v0.3.31
- v0.3.30
- v0.3.29
- v0.3.28
- v0.3.27
- v0.3.26
- v0.3.25
- v0.3.24
- v0.3.23
- v0.3.22
- v0.3.21
- v0.3.20
- v0.3.19
- v0.3.18
- v0.3.17
- v0.3.16
- v0.3.15
- v0.3.14
- v0.3.13
- v0.3.12
- v0.3.11
- v0.3.10
- v0.3.9
- v0.3.8
- v0.3.7
- v0.3.6
- v0.3.5
- v0.3.4
- v0.3.3
- v0.3.2
- v0.3.1
- v0.3.0
- v0.2.0
- v0.1.0
- dev-feature/checkstyle-output-format
This package is auto-updated.
Last update: 2024-09-04 13:22:08 UTC
README
Rector可即时升级并重构您应用程序的PHP代码。它可以帮助您在以下两大领域
1. 即时升级
Rector现在支持从PHP 5.3升级到8.1,以及像Symfony、PHPUnit和Doctrine这样的主要开源项目。您是否希望 轻松地始终保持在最新的PHP和框架?
使用Rector为您处理 即时升级。
2. 自动重构
您是否需要代码质量,但难以在您的团队中新开发人员中保持它?您是否希望在资深开发者都休息的时候也能看到智能代码审查?
将Rector添加到您的CI中,让它 持续重构您的代码 并保持代码质量。
安装
composer require rector/rector --dev
运行Rector
使用Rector主要有两种方法
- a 单个规则,以控制变更
- 或一组称为 集合 的规则
要使用它们,请在您的根目录中创建一个 rector.php
vendor/bin/rector init
并修改它
use Rector\Config\RectorConfig; use Rector\Set\ValueObject\SetList; use Rector\TypeDeclaration\Rector\Property\TypedPropertyFromStrictConstructorRector; return static function (RectorConfig $rectorConfig): void { // register single rule $rectorConfig->rule(TypedPropertyFromStrictConstructorRector::class); // here we can define, what sets of rules will be applied // tip: use "SetList" class to autocomplete sets with your IDE $rectorConfig->sets([ SetList::CODE_QUALITY ]); };
然后进行dry run Rector
vendor/bin/rector process src --dry-run
Rector将显示它 将更改 的文件diff。要 应用 这些更改,请删除 --dry-run
vendor/bin/rector process src
文档
- 在此找到完整文档。
- 探索Rector规则
通过书籍快速学习
您好奇Rector是如何内部工作的,如何创建自己的规则并测试它们,以及为什么Rector被创造出来吗?阅读Rector - 自动重构的力量,它将一步步引导您完成Rector设置以及如何创建自己的规则。
由社区支持 ❤️
得益于活跃的维护者,Rector社区强大,他们负责维护特定项目的Rector集合。
其中项目包括
- palantirnet/drupal-rector
- craftcms/rector
- FriendsOfShopware/shopware-rector
- sabbelasichon/typo3-rector
- sulu/sulu-rector
- efabrica-team/rector-nette
- Sylius/SyliusRector
- CoditoNet/rector-money
- laminas/laminas-servicemanager-migration
- cakephp/upgrade
- driftingly/rector-laravel
雇用我们完成任务 💪
Rector是我们开发和分享的免费工具,因此任何人都可以自动化他们的重构。但并非每个人都愿意花数十小时来理解抽象语法树。 这就是我们提供商业支持的原因 - 为了节省您的时间。
您想在您的代码库中应用Rector,但没有时间来与您的项目奋斗吗? 雇用我们 以更快地完成任务。
如何贡献
查看贡献指南 或访问开发仓库rector/rector-src。
调试
您可以使用--debug
选项,这将打印嵌套异常输出
vendor/bin/rector process src/Controller --dry-run --debug
或者使用Xdebug
- 确保Xdebug已安装和配置
- 运行Rector时添加
--xdebug
选项
vendor/bin/rector process src/Controller --dry-run --xdebug
已知缺点
如何应用编码标准?
Rector使用nikic/php-parser,它基于称为抽象语法树(AST)的技术构建。AST不了解空格,当写入文件时,会产生格式糟糕的PHP代码和docblock注释。因此,您的项目需要有一个编码标准工具和一系列格式化规则,以便Rector的输出代码看起来更整洁。