rector / rector
即时升级和自动化重构任何PHP代码
Requires
- php: ^7.2|^8.0
- phpstan/phpstan: ^1.12.2
Suggests
- ext-dom: To manipulate phpunit.xml via the custom-rule command
- dev-main
- 1.2.5
- 1.2.4
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.1
- 1.1.0
- 1.0.5
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- 0.19.8
- 0.19.7
- 0.19.6
- 0.19.5
- 0.19.4
- 0.19.3
- 0.19.2
- 0.19.1
- 0.19.0
- 0.18.13
- 0.18.12
- 0.18.11
- 0.18.10
- 0.18.9
- 0.18.8
- 0.18.7
- 0.18.6
- 0.18.5
- 0.18.4
- 0.18.3
- 0.18.2
- 0.18.1
- 0.18.0
- 0.17.13
- 0.17.12
- 0.17.11
- 0.17.10
- 0.17.9
- 0.17.8
- 0.17.7
- 0.17.6
- 0.17.5
- 0.17.4
- 0.17.3
- 0.17.2
- 0.17.1
- 0.17.0
- 0.16.0
- 0.15.25
- 0.15.24
- 0.15.23
- 0.15.22
- 0.15.21
- 0.15.20
- 0.15.19
- 0.15.18
- 0.15.17
- 0.15.16
- 0.15.15
- 0.15.14
- 0.15.13
- 0.15.12
- 0.15.11
- 0.15.10
- 0.15.9
- 0.15.8
- 0.15.7
- 0.15.6
- 0.15.5
- 0.15.4
- 0.15.3
- 0.15.2
- 0.15.1
- 0.15.0
- 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
This package is auto-updated.
Last update: 2024-09-21 14:32:43 UTC
README
Rector 立即升级并重构您的应用中的PHP代码。它可以帮助您在以下两个主要领域
1. 即时升级
Rector 现在支持从PHP 5.3升级到8.2,以及像 Symfony、PHPUnit 和 Doctrine 这样的主要开源项目。您是否希望 无需努力就始终处于最新的PHP和框架?
使用Rector来处理您的 即时升级。
2. 自动重构
您是否需要代码质量,但苦于难以在您的团队中保持?您是否希望在高级开发人员睡觉时也能看到智能代码审查?
将Rector添加到您的CI中,并让它 持续重构您的代码,保持代码质量。
阅读我们的 博客文章,了解如何设置自动化重构。
安装
composer require rector/rector --dev
运行Rector
使用Rector有两种主要方式
- a 单个规则,以控制更改
- 或一组称为 集 的规则
要使用它们,在您的根目录中创建一个 rector.php
vendor/bin/rector
并修改它
use Rector\Config\RectorConfig; use Rector\TypeDeclaration\Rector\Property\TypedPropertyFromStrictConstructorRector; return RectorConfig::configure() // register single rule ->withRules([ TypedPropertyFromStrictConstructorRector::class ]) // here we can define, what prepared sets of rules will be applied ->withPreparedSets( deadCode: true, codeQuality: true );
然后进行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
- contao/contao-rector
- php-static-analysis/rector-rule
雇佣我们完成工作 💪
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 提供了 2 个辅助工具来格式化打印 AST 节点,以协助简单的调试
use PhpParser\Node\Scalar\String_; $node = new String_('hello world!'); // prints node to string, as PHP code displays it print_node($node);
已知缺点
-
Rector 使用 nikic/php-parser,这是一种基于名为 抽象语法树 (AST) 的技术。AST 不了解空格,当写入文件时,它会产生格式糟糕的 PHP 和 docblock 注释代码。
-
Rector 的并行模式在大多数操作系统上都能正常工作。在 Windows 上,即使遵循了 并行故障排除 指南,您可能也会遇到一些无法解决的问题。在这种情况下,请检查您是否正在使用 Powershell 7 (pwsh)。将您的终端更改为命令提示符 (cmd) 或 Windows 的 bash。
如何应用编码标准?
您的项目需要有一个编码标准工具 和一系列格式化规则,这样它才能使 Rector 的输出代码看起来又好又亮。
在混合 PHP+HTML 内容的文件上可能产生意外的输出
当您对具有混合 PHP+HTML 内容的文件应用更改时,您可能需要在应用更改后手动验证已更改的文件。