rector/rector

即时升级和自动化重构任何PHP代码

资助包维护!
tomasvotruba

安装量: 58,387,823

依赖者: 2,986

建议者: 5

安全: 0

星标: 8,628

关注者: 88

分支: 680

开放问题: 13

1.2.5 2024-09-08 17:43 UTC

This package is auto-updated.

Last update: 2024-09-21 14:32:43 UTC


README

Downloads


Rector 立即升级并重构您的应用中的PHP代码。它可以帮助您在以下两个主要领域

1. 即时升级

Rector 现在支持从PHP 5.3升级到8.2,以及像 SymfonyPHPUnitDoctrine 这样的主要开源项目。您是否希望 无需努力就始终处于最新的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是一个我们开发并免费分享的工具,任何人都可以自动化他们的重构。但并非每个人都有数十个小时的时间来理解抽象语法树。 这就是我们提供商业支持的原因 - 为了节省您的时间

您想在代码库上应用Rector,但没有时间处理您的项目吗? 雇佣我们 来更快地完成任务。


如何贡献

查看贡献指南 或前往开发仓库 rector/rector-src


调试

您可以使用 --debug 选项,这将打印嵌套异常的输出

vendor/bin/rector process src/Controller --dry-run --debug

或者使用 Xdebug

  1. 请确保 Xdebug 已安装并配置
  2. 运行 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 的输出代码看起来又好又亮。

我们使用 ECS此配置

在混合 PHP+HTML 内容的文件上可能产生意外的输出

当您对具有混合 PHP+HTML 内容的文件应用更改时,您可能需要在应用更改后手动验证已更改的文件。