Утилита PHP Call Graph? [закрыто]

Итак, я потратил немало времени, пытаясь сделать это с помощью py2exe. Проблема заключалась в том, чтобы получить базовую папку скрипта, выполнялась ли она как скрипт python или исполняемый файл py2exe. Также, чтобы он работал независимо от того, запускался ли он из текущей папки, другой папки или (это было самым сложным) из пути к системе.

В конце концов я использовал этот подход, используя sys.frozen как индикатор работает в py2exe:

import os,sys
if hasattr(sys,'frozen'): # only when running in py2exe this exists
    base = sys.prefix
else: # otherwise this is a regular python script
    base = os.path.dirname(os.path.realpath(__file__))
24
задан ire_and_curses 13 September 2009 в 12:45
поделиться

4 ответа

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

Example of doxygen call graph

31
ответ дан 28 November 2019 в 23:42
поделиться

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

1
ответ дан 28 November 2019 в 23:42
поделиться

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

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

И этот может генерировать какие-то графы вызовов.


Это также может быть интегрирован с PHPUNit для генерации покрытия кода при запуске модульных тестов
Некоторое время назад PHPUnit смог сгенерировать некоторые графы вызовов с помощью graphviz; Однако я больше не нахожу такой возможности: - (


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

3
ответ дан 28 November 2019 в 23:42
поделиться

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

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

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

2
ответ дан 28 November 2019 в 23:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: