Analizando la calidad del código fuente con PHP Depend

2021-06-26 - Categorías: General / PHP

Hay muchas herramientas para medir la calidad del código fuente. Una de estas es PHP Depend, que del mismo modo que JDepend para Java, analiza los códigos fuentes, y nos da una visión del estado del código sin entrar al detalle.

Este es un pequeño HOWTO para instalarlo en un proyecto y empezar a usar esta herramienta.

Cómo instalar PHP Depend

Lo más sencillo es generar un directorio /bin al estilo de Symfony, Magento, o proyectos similares.. en donde podemos tener los ejecutables de PHP. Lo siguiente que podemos hacer, es descargar la última versión de PHP Depend, que a fecha de hoy es haciendo lo siguiente en el proyecto:

mkdir bin
cd bin
wget https://github.com/pdepend/pdepend/releases/download/2.9.1/pdepend.phar -O pdepend

Podemos ver todas las releases, por si hay versiones más actuales, en:
https://github.com/pdepend/pdepend/releases

Lanzando PHP Depend

Si por ejemplo tenemos la mayoría del código fuente bajo el directorio src/, podríamos desde la raíz del proyecto lanzarlo. Podemos lanzarlo como indica la documentación, usando el comando tal que así:

mkdir tmp
php bin/pdepend --summary-xml=tmp/summary.xml --jdepend-chart=tmp/jdepend.svg --overview-pyramid=tmp/pyramid.svg src/

Con los parámetros anteriores se generará el sumario en XML, la gráfica de JDepend, y la pirámide clásica de JDepend. Si queremos ver todas las opciones podemos hacer lo siguiente:

php bin/pdepend --help

Significados relacionados con la calidad del código

Lo más visible y conocido en JDepend, en este caso para PDepend, es su pirámide:

Todos estos acrónimos nos dan una visión conceptual del estado de la programación:

  • ANDC = Average Number of Derivered Classes.
  • AHH = Average Hierarchy Height.
  • NOP = Number Of Packets.
  • NOC = Number Of Classes.
  • NOM = Number Of Methods.
  • LOC = Lines Of Code.
  • CYCLO = Cyclomatic Complexity.
  • CALLS = Quantity of calls for operations.
  • FANOUT = Classes referenced by others.

Usando estos conceptos podemos estudiar relaciones entre los términos. Por ejemplo, según las líneas de código, cantidad de clases, métodos, paquetes, etc.. podemos ver si un programa está más o menos estructurado. Si tuviera muchas líneas de código pero pocas clases podría mejorarse en esta línea de acción refactorizando. Si tuviéramos sin embargo demasiados métodos, se podría simplificar. El tema de las herencias de clases, el encapsulamiento en objetos de ciertas cantidades de métodos, o su ausencia, también nos puede indicar líneas de acción para mejorar la calidad del código. Clases u objetos que llaman a otros, que pueden establecer ciclos, acoplamiento, viscosidad, etc.. todos estos números nos pueden indicar que puede haber sin todavía haber entrado a leer fichero a fichero el programa.

Otra gráfica muy interesante que nos sirve PHP Depend es la gráfica de inestabilidad y abstracción. Su significado es el de mostrar la interdependencia entre las partes del código, en relación con los niveles de abstracción de una aplicación. Conviene tener aplicaciones no demasiado inestables y con buenos niveles de abstracción.

Terminando y referencias

Para terminar sólo queda remitirte a la página oficial del proyecto y sus fuentes:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

 

© 2021 JnjSite.com - MIT license

Sitio hecho con WordPress, diseño y programación del tema por Jnj.