标签: rector

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

由于 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,
    ]);
};
Run Code Online (Sandbox Code Playgroud)

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

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

php symfony doctrine-orm rector php-8

7
推荐指数
1
解决办法
2950
查看次数

校长如何避免格式化源代码?

运行简单的 Rector 规则时NormalizeNamespaceByPSR4ComposerAutoloadFileSystemRector,源代码将完全格式化,用于美化源代码的换行符和空格将被删除。如何在 Rector 中避免这种情况?

$services->set(NormalizeNamespaceByPSR4ComposerAutoloadFileSystemRector::class);

... 是 rector.php 中唯一的服务配置。

Rector 说“![注意] File ...”将被添加:“所以根据规则它创建一个新文件(实际上它是同一个文件......)。我怀疑这对于 Rector 来说看起来很新,因为添加了命名空间规则。

php rector

5
推荐指数
1
解决办法
151
查看次数

CakePHP 3.10 -> 4.x 升级 - Rector 无法启动

我正在使用4.x 升级指南将站点从 CakePHP 3.10.0 升级到CakePHP 4.x。我已经成功了,直到您需要运行以下命令:

bin/cake upgrade rector --rules phpunit80 <path/to/app/tests>
bin/cake upgrade rector --rules cakephp40 <path/to/app/src>
Run Code Online (Sandbox Code Playgroud)

我跳过了第一个命令,因为我还没有进行单元测试)。当我运行第二个命令时,它只是挂起。该命令根本没有任何输出。我已经让它静置了几个小时,但没有任何作用。我添加-v到命令中并最终得到了一些输出,但它仍然挂起:

$ bin/cake upgrade rector --rules cakephp40 ../vintage-lib/src -v
Detecting autoload file for /mnt/d/Programming/PHP/vintage-lib/src
-> Checking /mnt/d/Programming/PHP/vintage-lib/src/vendor/autoload.php
-> Checking /mnt/d/Programming/PHP/vintage-lib/vendor/autoload.php
-> Found /mnt/d/Programming/PHP/vintage-lib/vendor/autoload.php
Running /mnt/d/Programming/PHP/upgrade/vendor/bin/rector process  --autoload-file='/mnt/d/Programming/PHP/vintage-lib/vendor/autoload.php' --config='/mnt/d/Programming/PHP/upgrade/config/rector/cakephp40.php' --working-dir='/mnt/d/Programming/PHP/vintage-lib/src' '/mnt/d/Programming/PHP/vintage-lib/src'
Run Code Online (Sandbox Code Playgroud)

我尝试在 Windows、WSL 甚至 Linux VM 中运行它 - 结果保持不变,这让我相信它与我的代码或配置文件有关。我尝试在每个插件上运行该命令,但得到相同的结果。

我还运行并修复了来自 codeniffer 的所有错误和警告,但这没有什么区别。

我很茫然,因为我不知道下一步该去哪里检查。任何帮助将不胜感激。

php cakephp rector

5
推荐指数
1
解决办法
715
查看次数

配置 Rector 并使用 symfony 6/php8 的简单规则

我想使用 Rector 重构我的代码,因为我将项目更新为 symfony 5.4 到 6.1。我的php项目版本:8.1.5

所以,我想使用一个简单的规则,将我的注释更改为带有 ector 的属性。但是当我使用命令执行ector时:vendor/bin/rector process src

校长通知我:[OK]校长完成了!

但我的文件没有改变,我的实体注释也没有改变。我尝试按照此文档来配置我的rector.php并将rector与symfony一起使用。

https://github.com/rectorphp/rector-symfony

https://github.com/rectorphp/rector

我做错了什么?

这是我的rector.php

<?php

declare(strict_types=1);

use Rector\Config\RectorConfig;
use Rector\Php80\ValueObject\AnnotationToAttribute;
use Rector\Php80\Rector\Class_\AnnotationToAttributeRector;
use Rector\Symfony\Rector\MethodCall\StringFormTypeToClassRector;
use Rector\Symfony\Rector\Class_\CommandPropertyToAttributeRector;

return static function (RectorConfig $rectorConfig): void {
    $rectorConfig->paths([
        __DIR__ . '/src'
    ]);

    $rectorConfig->phpstanConfig(__DIR__ . '/phpstan.neon');

    $rectorConfig->symfonyContainerXml(__DIR__ . '/var/cache/dev/App_KernelDevDebugContainer.xml');

    
    $rectorConfig->ruleWithConfiguration(
      AnnotationToAttributeRector::class,
      [new AnnotationToAttribute('Symfony\Routing\Annotation\Route')]
  );
    // register a single rule
    //$rectorConfig->rule(CommandPropertyToAttributeRector::class);

    // define sets of rules
      /* $rectorConfig->sets([
        SymfonySetList::SYMFONY_60,
        SymfonySetList::SYMFONY_CODE_QUALITY,
        SymfonySetList::SYMFONY_CONSTRUCTOR_INJECTION,
        ]);*/
};

Run Code Online (Sandbox Code Playgroud)

这是我的composer.json


{
    "type": "project",
    "license": "proprietary",
    "minimum-stability": "dev",
    "prefer-stable": …
Run Code Online (Sandbox Code Playgroud)

php doctrine symfony rector

5
推荐指数
2
解决办法
6191
查看次数

PHP Rector 合并路径并跳过

我有一个 PHP Symfony 项目,其中包含许多供应商和其他子目录文件,这些文件不应被 ector 触及。因此,我将路径变量设置为仅检查特定文件夹树中的文件。效果很好。

    return static function (RectorConfig $rectorConfig): void {
    $rectorConfig->paths([
        __DIR__ . '/plugins/*',
    ]);
Run Code Online (Sandbox Code Playgroud)

但由于此文件夹包含可能有自己的供应商和测试目录的插件,因此我想跳过这些。关于文档https://github.com/rectorphp/rector/blob/main/docs/how_to_ignore_rule_or_paths.md使用通配符跳过是可能的,但这些跳过规则将被完全忽略。

return static function (RectorConfig $rectorConfig): void {
    $rectorConfig->paths([
        __DIR__ . '/plugins/*',
    ]);

    $rectorConfig->skip([
        __DIR__ . '/plugins/*/tests',
        __DIR__ . '/plugins/*/vendor',
    ]);
Run Code Online (Sandbox Code Playgroud)

我的配置可能有什么问题?或者校长不允许结合这些选项?文档没有提供这样的情况。

php rector

1
推荐指数
1
解决办法
2840
查看次数

标签 统计

php ×5

rector ×5

symfony ×2

cakephp ×1

doctrine ×1

doctrine-orm ×1

php-8 ×1