Существуют ли какие-либо статические анализаторы PHP, которые обнаруживают не- вызовы методов существующего класса?

Ниже представлена ​​синтаксически правильная программа PHP, которая работает половину времени. На любом статическом языке эквивалентные строки были бы ошибкой компиляции:

 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, которые обнаруживают этот конкретный класс проблем?

Я прочитал связанный вопрос: Есть ли статический анализатор кода [например, Lint] для файлов PHP?

Но вместо этого Попробовав все инструменты, упомянутые там, один за другим, я подумал, что задам более конкретный вопрос, чтобы сосредоточиться на том, который может это сделать.

6
задан Community 23 May 2017 в 11:47
поделиться