有没有办法让 Rector 不内联类引用?

问题描述 投票:0回答:2

我正在使用 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 规则可以自动将这些内联引用转回正确的使用语句?

php namespaces php-cs-fixer class-names rector
2个回答
0
投票

尝试将其添加到 rector 配置中:

$rectorConfig->importNames();

https://getrector.com/documentation/import-names


0
投票

对于自动导入名称: 校长提供

$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
如果已经存在,它将阻止添加导入语句。

© www.soinside.com 2019 - 2024. All rights reserved.