运行简单的 Rector 规则时NormalizeNamespaceByPSR4ComposerAutoloadFileSystemRector,源代码将完全格式化,用于美化源代码的换行符和空格将被删除。如何在 Rector 中避免这种情况?
$services->set(NormalizeNamespaceByPSR4ComposerAutoloadFileSystemRector::class);
... 是 rector.php 中唯一的服务配置。
Rector 说“![注意] File ...”将被添加:“所以根据规则它创建一个新文件(实际上它是同一个文件......)。我怀疑这对于 Rector 来说看起来很新,因为添加了命名空间规则。
校长对此没有影响力;重新格式化是由于 PHP 代码解析器的工作方式而发生的。
Rector 使用nikic 的 PHP-Parser。
它生成一个标记树(AST - 抽象语法树),并在转换后重新组装它。
不幸的是,解析器不(iirc,它不能)跟踪空格。
我不确定是否有任何方法可以防止这种情况或重建原始间距。
尝试关注相关的 GitHub 问题。