exakat php graph dependencies static-analysis codesniffer

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!