是否有任何PHP静态分析器可以检测不存在的类方法调用?

Ale*_*x R 6 php static-analysis

下面是一个语法上有效的PHP程序,它的工作时间是一半.在任何静态语言中,等效行都是编译错误:

<?php
class A {
 function a() { return 1; }
}

$x = new A();

if(rand(1,100) > 50) {
  print $x->b();
}
else {
  print $x->a();
}

?>
Run Code Online (Sandbox Code Playgroud)

PHP的示例输出:

C:\temp>php static.php
1
C:\temp>php static.php
1
C:\temp>php static.php

Fatal error: Call to undefined method A::b() in C:\temp\static.php on line 9

Call Stack:
    0.9747     323920   1. {main}() C:\temp\static.php:0
Run Code Online (Sandbox Code Playgroud)

动态语言支持者会感到兴奋,因为,嘿,这个程序在50%的时间内工作,而静态语言上的等效程序将无法编译,因此在0%的时间内工作.

所以,关于我的问题.是否有任何PHP静态分析工具可以检测到这类特定的问题?

我已经阅读了相关的问题:PHP文件是否有静态代码分析器[如Lint]?

但是我没有尝试一个接一个地提到的所有工具,而是认为我会问一个更具体的问题,以便能够做到这一点.

OZ_*_*OZ_ 3

PhpStorm IDE 可以在 PHP 代码中找到此错误和许多其他错误。这是Inspections这个IDE的特色。

此代码的示例

我只是这个 IDE 的用户,这不是营销:)

  • @Jared Farrish,无论如何,您只需单击一下即可检查整个项目并获取详细的错误列表。看来你想找出批评的理由。伙计,这不是我的软件 - 下载它,测试它。 (2认同)