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

问题描述

| 下面是语法上有效的PHP程序,该程序可以工作一半时间。在任何静态语言中,等效行都是编译错误
<?PHP
class A {
 function a() { return 1; }
}

$x = new A();

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

?>
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
动态语言的支持者们都非常兴奋,因为,嘿,这个程序在50%的时间内工作,而静态语言上的等效程序将无法编译,因此在0%的时间内工作。 所以,关于我的问题。是否有任何PHP静态分析工具可以检测此类特定问题? 我已经阅读了相关的问题:是否有用于PHP文件的静态代码分析器(如Lint)? 但是,我没有一个一个地尝试其中提到的所有工具,而是想问一个更具体的问题,以实现这一目标的零插入。     

解决方法

PhpStorm IDE可以在PHP代码中找到此错误以及许多其他错误。这是此IDE的“ 2”功能。 我只是此IDE的用户,不是营销人员:)