Утилита PHP Call graph? [закрытый]

Я ищу утилиту, похожую на gprof, которая будет генерировать вызов graph для PHP-кода. Я бы предпочел что-то, что может производить графический вывод или, по крайней мере, текстовый вывод, который может быть интерпретирован GraphViz или подобным, но я соглашусь на простой текстовый вывод.

кто-нибудь знает какой-либо инструмент, который может это сделать?

5 ответов


Я бы обязательно попробовал Doxygen. Он поддерживает PHP, и графики вызовов и графики вызывающих абонентов, которые он создает, были очень полезны для изучения "иностранного кода" для меня ранее.

Example of doxygen call graph


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

возможно, вы захотите взглянуть на отладчик xdebug расширение: оно приносит профилирования на PHP и генерировать callgrind-подобные файлы, которые можно читать с помощью KCacheGrind на Linux.

и этот способен генерировать какие-то callgraphs.


это также может быть интегрирован с PHPUNit, чтобы генерировать покрытия кода при выполнении модульных тестов
некоторое время назад PHPUnit смог генерировать некоторые callgraphs с graphviz ; я больше не нахожу эту опцию, хотя : - (


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


Как уже отмечалось, Doxygen может генерировать графики вызовов.

Xdebug может генерировать следы функция. Они отличаются от графиков doxygen тем, что они генерируются из кода времени выполнения, тогда как doxygen генерируется статически. Я не знаю никаких инструментов, которые могут превратить трассировки функций в визуальное представление, хотя это не должно быть так сложно сделать.

есть еще bytekit расширение, основная функция которого показать байт-код, который будет генерировать исходный код php. Он может показать это на графике, который по существу является callgraph.


Это старая тема - но в случае, если кто-то найдет его полезным....

  • kKCachegrind создаст callgraphs, показанные фактические потоки выполнения.

  • PHPCallGraph является довольно простым вокруг graphviz, который выполняет статический анализ

  • там же мои собственные усилия который похож на PHPCallGraph, но добавляет информацию о циклах / условных структурах и предоставляет метод для добавление обратных вызовов к узлам. Некоторые примеры сценариев поставляются в комплекте с инструментарием, но вы также можете встроить его в свои собственные сценарии.


Если вам нужно что-то интерактивное, проверьте новый nWire для PHP. Это плагин Eclipse, который работает с PDT 2.1 и Zend Studio 7.0.