График зависимостей для большого приложения PHP
Недавно я унаследовал большое приложение PHP с NO object/modules/namespaces... только много файлов, содержащих функции.
Конечно, есть много зависимостей (и все файлы и почти всегда включены).
Я ищу инструмент, который мог бы анализировать файлы и генерировать граф зависимостей. Тогда было бы легче обнаружить независимые файлы/набор файлов и перегруппировать все это.
Пока что лучшее решение, которое я нашел, было бы написать sniff для CodeSniffer, чтобы обнаружить все вызовы функций, а затем использовать их для генерации графика.
Кажется, что-то полезное для других, поэтому я уверен, что инструменты уже существуют для него.
Что вы порекомендовали бы?
Ответы
Ответ 1
Я думаю, что лучшим решением является использование doc generat + grapviz, PHPDocumentor, похоже, имеет расширение Grapviz на https://github.com/phpDocumentor/GraphViz
Это пример, сделанный с помощью PHPDocumentor:
http://demo.phpdoc.org/Clean/graphs/classes.svg
Слишком вы можете использовать иерархический профайлер, например xhprof (https://github.com/facebook/xhprof), это может нарисовать дерево всех вызовов функций из выполнения,
Пример формы xhprof draw, выполненный Graphviz
![A example form xhprof draw done by Graphviz]()
Ответ 2
Я мог бы рекомендовать легкий проект, который я написал несколько дней назад. В основном у меня было 300+ файлов PHP-проекта, и я хотел определить, какие файлы эти файлы требуют /include и наоборот. Более того, я хотел проверить каждый отдельный файл, какие файлы этот файл требует/включает (прямо или косвенно, т.е. через наследование файлов) и наоборот: какие файлы включают этот конкретный файл. Для любой комбинации из них мне нужен интерактивный график зависимостей (база по включению файла, а не по вызову/использованию класса/функции).
Проверьте песочницу проекта и ее исходный код.
Обратите внимание, что все это было написано всего за 2 дня, поэтому не судите об этом слишком суровый. Важно то, что он выполняет свою работу!