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

时间:2011-05-24 00:36:52

标签: 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();
}

?>

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静态分析工具可以检测到这类特定的问题?

我已阅读相关问题:Is there a static code analyzer [like Lint] for PHP files?

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

1 个答案:

答案 0 :(得分:1)

PhpStorm IDE可以在PHP代码中找到此错误和许多其他错误。它是此IDE的Inspections功能。

example for this code

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