Rector 没有找到任何需要更改的内容(将 Doctrine 注释转换为属性)

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

由于 Doctrine 似乎在其最新更新中完全删除了注释支持,我正在尝试使用 Rector 将实体中的注释转换为属性。

我遵循了(看似)简单的官方教程 - 我有完全相同的ector.php内容,没有NetteSetList:

use Rector\Doctrine\Set\DoctrineSetList;
use Rector\Symfony\Set\SymfonySetList;
use Rector\Symfony\Set\SensiolabsSetList;
use Rector\Config\RectorConfig;

return function (RectorConfig $rectorConfig): void {
    $rectorConfig->sets([
        DoctrineSetList::ANNOTATIONS_TO_ATTRIBUTES,
        SymfonySetList::ANNOTATIONS_TO_ATTRIBUTES,
        SensiolabsSetList::FRAMEWORK_EXTRA_61,
    ]);
};

我使用

vendor/bin/rector process src/Entity --dry-run --debug
运行测试。

它确实列出了

src/Entity
中的每个实体,但在应该用属性替换每个学说注释时没有检测到任何可能的更改。

php symfony doctrine-orm php-8 rector
3个回答
8
投票

我遇到了同样的问题,我通过更改composer.json中的Php版本来解决它,如下所述: 配置 Rector 并使用 symfony 6/php8 的简单规则

只需将 php 版本 7 更改为 8 “php”:“>=7.2.5”到“php”:“^8.0”

我希望这有帮助:)


2
投票

您可能使用 PHPStan 吗?看起来

phpstan.neon
配置文件会被 Rector 自动使用,无论你是否告诉它。

我做了以下事情

  • 从项目根目录中删除
    phpstan.neon
    文件
  • 使用
    --clear-cache
    选项再次运行 Rector。如果没有它,它似乎无法识别
    phpstan.neon
    中的配置更改。

现在校长再次建议改变。

好像和

scanFiles
中的
phpstan.neon
选项有关。在我们的例子中,它有一个条目来修复 PHPCS 强制在自定义嗅探中使用全局常量的问题。

parameters:
    scanFiles:
        - vendor/squizlabs/php_codesniffer/src/Util/Tokens.php

我还没有更多细节。但也许这可能对你有帮助。


0
投票

对于 Rector 和 Symfony 的最新版本(2024),请使用以下语法:

->withSets([
    DoctrineSetList::ANNOTATIONS_TO_ATTRIBUTES,
    SymfonySetList::ANNOTATIONS_TO_ATTRIBUTES,
    SensiolabsSetList::ANNOTATIONS_TO_ATTRIBUTES,
])
© www.soinside.com 2019 - 2024. All rights reserved.