Siguiendo con las herramientas de medición de la calidad del código fuente del post anterior, encontramos que tenemos disponible una alternativa a PHP Depend, que tiene funciones parecidas. Se trata de PHPLOC de Sebastian Bergmann, que te puede sacar unas métricas muy descriptivas en modo texto de todo un programa.
Es bien sencillo de usar y los resultados son bien descriptivos por si mismos. Vamos al grano..
Instalando PHPLoc
Del mismo modo que en post anterior, y al estilo de tener un directorio de binarios PHP como en Symfony o Magento, podemos descargar en el directorio /bin el ejecutable phploc haciendo así:
mkdir bin
cd bin
wget https://phar.phpunit.de/phploc.phar -O phploc
Sacando las principales métricas del código fuente
Ya sólo queda lanzarlo sobre el directorio en donde tengamos los fuentes que queramos analizar. Si por ejemplo tenemos construido casi todo sobre el directorio src/ podríamos hacer lo siguiente:
php bin/phploc src
Y si todo va bien nos devolvería los resultados. Por ejemplo podría empezar con datos como los siguientes de la imagen. Número de directorios, ficheros, líneas de código, etcétera.. los principales datos:
Esta parte es sencilla, nos puede dar una visión rápida de lo grande y las proporciones entre líneas de código, ficheros, clases, métodos, etc. Si por ejemplo tenemos funciones que sean de más de 40-50 líneas ya sabemos que se puede refactorizar. Según tamaños de clases, números de clases en relación con el total de líneas sabremos que tanto puede haberse estructurado. Si hay mucho código que no está encapsulado en clases también es otro tema a refactorizar. Etcétera..
La complejidad ciclomática, que nos indica por ejemplo en estos resultados de la imagen anterior. En este caso vemos que estando cerca de 50, o más, tenemos un alto riesgo. El código tiene algunas clases y métodos que no serán muy testeables, probablemente tardemos en hacer debug, y existe mucho riesgo de que algo falle.
También tenemos las dependencias entre las partes del código. Si se usan variables globales, métodos o atributos estáticos.
Y finalmente tenemos estos últimos datos sobre la estructura. Es decir, tenemos qué tanto se ha estructurado la aplicación en clases, espacios de nombres, interfaces, etcétera..
Terminando y referencias
Con todo esto podemos hacernos una idea, como en el post anterior, de más elementos para mejorar la calidad del código fuente. Con todo esto podremos fijarnos objetivos para refactorizar, aumentar los tests, su fialibilidad, etcétera.
Sólo queda remitirte a la página en GitHub del proyecto:
https://github.com/sebastianbergmann/phploc