PhpStorm 2019.2 Symfony控制器中未使用的元素

vev*_*vip 3 php symfony phpstorm

我正在使用PhpStorm 2019.2在Symfony控制器中,突出显示了未使用的方法。Xdebug,然后我得到一个错误

我在https://youtrack.jetbrains.com上读到,这可能是一个错误,IDE的新版本无法正确使用注释

C:\OpenServer\OSPanel\modules\php\PHP_7.2\php.exe -dxdebug.remote_enable=1 -dxdebug.remote_mode=req -dxdebug.remote_port=9090 -dxdebug.remote_host=127.0.0.1 C:\OpenServer\OSPanel\domains\myblog.loc\src\Controller\IndexController.php

Fatal error: Class 'Symfony\Bundle\FrameworkBundle\Controller\Controller' not found in C:\OpenServer\OSPanel\domains\myblog.loc\src\Controller\IndexController.php on line 18

Call Stack:
    0.0679     382496   1. {main}() C:\OpenServer\OSPanel\domains\myblog.loc\src\Controller\IndexController.php:0

Dump $_SERVER
   $_SERVER['REMOTE_ADDR'] is undefined
   $_SERVER['REQUEST_METHOD'] is undefined
Dump $_SESSION
   $_SESSION['*'] is undefined
Dump $_REQUEST

Process finished with exit code 255

Run Code Online (Sandbox Code Playgroud)

一些控制器

class ContactController extends Controller
{
    /**
     * @Route("/contact", name="contact_view")
     * @return \Symfony\Component\HttpFoundation\Response
     */
    public function contactView()
    {
        return $this->render('contact/contact.html.twig', [

        ]);
    }
}
Run Code Online (Sandbox Code Playgroud)

目前,该类及其操作已在控制器中标记为未使用,该怎么办?

Erd*_* G. 12

PHPStorm 2020

使用抑制注释@Route

快速的方法

  1. 将鼠标悬停在灰色功能上,或单击它并按Alt + Enter
  2. 如果带有“@Route”注释,请单击“抑制”

分步说明动画添加抑制路线

手动

设置... > 检查 > PHP/未使用/未使用的声明 > 入口点 > 抑制注释

  1. 添加@Route

如何转到“设置/检查/未使用的声明/入口点//抑制的路线”。 一步一步的动画

笔记

两种方法的作用完全相同,而且只需执行一次。

  • 知道如何使用 php8 属性 `#[Route(...)]` 来做到这一点吗? (2认同)

Lg1*_*102 11

您可以将控制器及其操作添加为入口点。这样,那些类和方法就不会被报告为死代码。

如果您的控制器在src/Controller并且您的操作方法具有 -Action后缀,您可以将这两个规则添加为入口点Settings| Editor | Inspections

Class                    Member
/Controller/*Controller  *Action
/Controller/*Controller
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明


dbr*_*ann 7

未使用的代码检查将无法识别正在调用的代码,因为PhpStorm无法正确检查在Symfony的中如何调用控制器HttpKernel::handleRaw()。其他类可能会发生这种情况,例如,当服务容器未选择该类时,它可能尚未被识别为已使用。在Symfony项目中,例如,通过构建缓存bin/console cache:clear(清除旧的缓存并预热新的缓存)应能帮助大多数缓存,但绝对不能总是如此,而且不能与控制器一起使用。

您还可以在整个项目上运行一次检查,然后将控制器标记为入口点,这将自动将这些类标记为(可能)使用的代码。当您执行此操作时,PhpStorm会将一个条目添加到项目中的文件.idea/misc.xml中,以确保每次都将其忽略。

如果误报率很高,您可以停用该功能或​​将其拨下,因此它只会查看例如受保护/专用方法。您可以在以下位置找到该选项:Settings/Preferences | Editor | Inspections | PHP | Unused

另请参阅:https : //blog.jetbrains.com/phpstorm/2019/04/locating-dead-code/