Instant Upgrades and Automated Refactoring of any PHP 5.3+ code
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 6 个月前 | ||
| 1 天前 | ||
| 1 天前 | ||
| 5 个月前 | ||
| 1 小时前 | ||
| 1 小时前 | ||
| 1 年前 | ||
| 5 个月前 | ||
| 23 小时前 | ||
| 2 年前 | ||
| 8 年前 | ||
| 5 个月前 | ||
| 8 年前 | ||
| 2 个月前 | ||
| 6 个月前 | ||
| 8 个月前 | ||
| 21 天前 | ||
| 1 个月前 |
Rector - 即时升级与自动化重构
Rector 可即时升级和重构应用程序的 PHP 代码。它能在两大方面为您提供帮助:
1. 即时升级
Rector 目前支持从 PHP 5.3 升级至 8.5,以及对 Symfony、PHPUnit 和 Doctrine 等主要开源项目的升级。您是否希望毫不费力地始终使用最新的 PHP 和框架版本?
让 Rector 为您处理即时升级。
2. 自动化重构
您是否已达到所需的代码质量,但团队中有新开发人员加入时难以维持?您是否希望即使所有资深开发人员都在休息,也能进行智能代码审查?
将 Rector 添加到您的 CI 中,让它持续重构您的代码,保持高代码质量。
阅读我们的 博客文章,了解如何设置自动化重构。
安装
composer require rector/rector --dev
运行 Rector
使用 Rector 主要有两种方式:
- 单一规则,以便更好地控制变更
- 或称为 规则集 的规则组
要使用它们,请在您的根目录中创建一个 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
);
然后对 Rector 进行空运行:
vendor/bin/rector src --dry-run
Rector 会显示它将要修改的文件差异。若要实际执行修改,请去掉 --dry-run 参数:
vendor/bin/rector src
文档
- 可在此处查看完整文档。
- 探索 Rector 规则
通过书籍快速学习
您是否好奇 Rector 的内部工作原理、如何创建和测试自己的规则,以及 Rector 诞生的原因? 阅读《Rector - The Power of Automated Refactoring》一书,它将逐步带您了解 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
- ibexa/rector
- guanguans/rector-rules
- wernerkrauss/silverstripe-rector
聘请我们完成工作 💪
Rector 是我们开发并免费分享的工具,以便任何人都能自动化其重构工作。但并非每个人都有大量时间自行去理解抽象语法树的复杂性。因此,我们提供商业支持——为您节省时间。
您是否希望在自己的代码库上应用 Rector,但没有时间处理项目中可能遇到的问题?聘请我们,让您更快达成目标。
如何贡献
请参阅贡献指南或访问开发仓库rector/rector-src。
调试
您可以使用--debug选项,该选项将打印嵌套异常输出:
vendor/bin/rector src/Controller --dry-run --debug
或使用 Xdebug:
- 确保已安装并配置 Xdebug
- 运行 Rector 时添加
--xdebug选项
vendor/bin/rector 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 代码和文档块注释格式都可能不够规范。
-
Rector 的并行模式在大多数操作系统上通常都能正常工作。但在 Windows 系统中,即使遵循 并行模式故障排除 指南,也可能遇到无法解决的问题。这种情况下,请检查是否使用的是 Powershell 7(pwsh)。建议将终端切换为命令提示符(cmd)或 Windows 版 bash。
如何应用编码标准?
您的项目需要配备编码标准工具和一套格式化规则,这样才能让 Rector 输出的代码重新变得美观规范。
可能在混合 PHP+HTML 内容的文件上产生意外输出
当您对包含 PHP + HTML 内容的文件应用更改后,可能需要在更改完成后手动验证该文件。