PhpStorm - 如何检测PHP错误"不应静态调用非静态方法"?

Gui*_*ara 3 php code-inspection phpstorm phpmd phpcodesniffer

使用PHP,静态方法既可以用于静态方法,也可以用于非静态方法,而非静态方法只能用于非静态方法.这就是调用动态方法静态生成E_STRICT错误的原因.

例如:

<?php

class Example
{
    public function foo() {
        return "Foo";
    }

    public static function bar() {
        return "Bar";
    }
}

$ex = new Example();

// Non-static call
echo $ex->bar();

// Static call on a non-static method
// PHP Error "Strict standards: Non-static method should not be called statically"
// ERROR NOT DETECTED BY PHPSTORM!
echo Example::foo();
Run Code Online (Sandbox Code Playgroud)

最后一行将生成此PHP错误(这是逻辑): 在此输入图像描述

我目前正在开发一个大型PHP应用程序,在某些PHP文件中静态调用非静态方法.这是一个非常老的PHP版本的问题,但我们决定迁移到最新的PHP版本.

手动检查所有项目文件,以确定这个错误的语法将太长(+ 1000文件)!

PhpStorm的内置代码检查功能在分析的源代码中未检测到此类错误.为什么?我应该配置什么?怎么样?

下面,我在PhpStorm中的PHP代码检查配置:

在此输入图像描述

谢谢!

Laz*_*One 5

那里的检查工作正常(证据).

  1. 请尝试Code | Inspect Code...此文件 - 它将强制从头开始重新分析此文件.好点?

  2. 如果没有 - 请执行File | Invalidate Caches...并重新启动IDE


PS
如果您对仅在整个项目运行此检查感兴趣- 使用Code | Run Inspection by Name... - Inspect Code为每个文件执行完全操作要快得多.