我正在使用 Rector 规则集
UP_TO_PHP_74
来更新遗留应用程序。
它大部分都做得很好,但我经常看到的问题是它正在改变
...
use My/Namespace/My/Classname;
...
/** @var Guestlist */
private $myVariable;
...对于这个内联的、完全合格的类名:
private /My/Namespace/My/Classname $myVariable;
这是我不想要的。 (这就是存在
use
语句的原因!)
有没有办法告诉 Rector 使用
use
语句而不是完全限定的内联引用?
如果没有,有没有办法让 Rector 运行一切,而不是 执行此操作的规则?
或者,是否有一个 PHP CS Fixer 规则可以自动将这些内联引用转回正确的使用语句?
尝试将其添加到 rector 配置中:
$rectorConfig->importNames();
对于自动导入名称: 校长提供
$rectorConfig->importNames();
对于单人短期课程:
$rectorConfig->importShortClasses(false);
根据您的要求,您将能够在其中通过真/假
如果您已将
Option::AUTO_IMPORT_NAMES
设置为 true,rector 会将其应用于每个分析的文件,即使 rector 没有对文件应用任何真正的更改。
原因是一个所谓的后校长负责这个,即NameImportingPostRector
。
如果你想只对真正改变的文件应用 Option::AUTO_IMPORT_NAMES,你可以配置它。
$parameters->set(Option::APPLY_AUTO_IMPORT_NAMES_ON_CHANGED_FILES_ONLY, true);
删除未使用的导入: 为此使用 phpcs 修复器
// ecs.php
use PhpCsFixer\Fixer\Import\NoUnusedImportsFixer;
use Symplify\EasyCodingStandard\Config\ECSConfig;
return static function (ECSConfig $ecsConfig): void {
$ecsConfig->rule(NoUnusedImportsFixer::class);
};
另一种选择是您可以使用编码风格: 规则
FullyQualifiedNameClassNameImportSkipVoter
如果已经存在,它将阻止添加导入语句。