php - exakat
Gráfico de dependencias para aplicaciones PHP grandes (2)
Creo que la mejor solución es usar un doc generat + grapviz, PHPDocumentor parece tener una extensión de Grapviz en https://github.com/phpDocumentor/GraphViz
Este es un ejemplo hecho con PHPDocumentor: http://demo.phpdoc.org/Clean/graphs/classes.svg
También puede usar un generador de perfiles jerárquico como xhprof ( https://github.com/facebook/xhprof ), esto puede dibujar un árbol de todas las llamadas a funciones desde una ejecución.
Un ejemplo de xhprof draw realizado por Graphviz
Recientemente heredé una gran aplicación PHP con NO objects / modules / namespaces ... solo muchos archivos que contienen funciones.
Por supuesto, hay MUCHAS dependencias (y todos los archivos y casi siempre incluidos).
Estoy buscando una herramienta que pueda analizar los archivos y generar un gráfico de dependencias. Sería más fácil detectar archivos independientes / conjunto de archivos y volver a factorizar todo.
Hasta ahora, la mejor solución que he encontrado sería escribir un sniff CodeSniffer para detectar todas las llamadas a funciones y luego usar eso para generar el gráfico.
Parece algo útil para otros, así que estoy seguro de que ya existen herramientas para ello.
Qué recomendarías ?
Podría recomendar un proyecto liviano que escribí hace unos días. Básicamente tenía un proyecto PHP de más de 300 archivos y quería detectar qué archivos requieren / incluyen estos archivos y viceversa. Además, quería verificar para cada archivo individual qué archivos requiere / incluye este archivo (directa o indirectamente, es decir, a través de la herencia de archivos) y viceversa: cuáles son los archivos que incluyen este archivo en particular. Para cualquier combinación de estos, quería un gráfico de dependencia interactivo (base en la inclusión de archivos y no en clases / llamadas a funciones / uso).
Echa un vistazo a la zona de pruebas del proyecto y su código fuente .
Tenga en cuenta que todo el asunto fue escrito en solo 2 días, así que no lo juzgue demasiado duro. ¡Lo importante es que está haciendo su trabajo!