如何配置Rector仅应用PHP兼容性相关的代码变更?
解决Rector仅保留PHP兼容性相关变更的方法
1. 使用兼容性专属规则集
Rector提供了专门针对PHP版本兼容性修复的规则集,完全不包含代码风格、最佳实践类的非必要变更。你可以替换原配置中的LevelSetList::UP_TO_PHP_82,改用SetList::PHP_COMPATIBILITY并指定目标PHP版本:
return static function (RectorConfig $rectorConfig): void { $rectorConfig->sets([ SetList::PHP_COMPATIBILITY, ]); // 指定需要兼容的目标PHP版本 $rectorConfig->phpVersion(PhpVersion::PHP_82); $rectorConfig->paths([ // 你的项目路径 ]); };
这个规则集只会处理影响PHP版本兼容的问题,比如废弃函数替换、语法兼容修复等,不会执行array()转[]这类风格化变更。
2. 手动跳过非兼容性规则(备选方案)
如果必须保留LevelSetList的部分规则,可通过以下步骤精准过滤:
- 执行
vendor/bin/rector process --dry-run查看所有待执行的规则,筛选出风格优化、最佳实践类的非兼容性规则 - 将这些规则加入
withSkip列表,示例如下:
return static function (RectorConfig $rectorConfig): void { $rectorConfig->sets([LevelSetList::UP_TO_PHP_82]); $rectorConfig->paths([ // 你的项目路径 ]); $rectorConfig->withSkip([ LongArrayToShortArrayRector::class, ArraySyntaxRector::class, // 其他非兼容性规则 ]); };
3. 规则集区别说明
LevelSetList::UP_TO_PHP_X:是「升级到PHP X的全套方案」,包含兼容性修复、代码风格优化、最新特性引入三类变更SetList::PHP_COMPATIBILITY:仅保留让代码在PHP X环境下正常运行的必要修复,完全不涉及风格或可选特性变更
内容的提问来源于stack exchange,提问作者Olle Härstedt
相关产品推荐
相关产品推荐

