Calidad de software en PHP (IV) – Utilizando PHPloc

En otro post (Calidad de software en PHP (II)) hablamos sobre phploc, explicamos que hace, para que se utiliza, algunas métricas que tiene en cuenta, etc. Ahora nos adentraremos en su utilización, para ello, lo primero que haremos es ver su ayuda.

$ phploc --help

Nos muestra todos los parametros que puede recibir. Vamos a ir explicando uno por uno

count-test: por defecto phploc no tiene en cuenta las clases y metodos de test (test unitarios) que tenemos en nuestro proyecto, este comando hace que lo tenga en cuenta

log-xml: nos permite guardar el resultado del test en un archivo xml

exclude: si estamos testeando todo nuestro proyecto seguro que habrá directorio que no querramos que entren en este testeo (por ejemplo algún directorio de pruebas) este comando nos posibilita excluirlo. Si tuvieramos mas de un directorio a excluir hay que agregar este parametro por cada uno.

verbose: muestra una barra de progreso miestras realiza el test, muy práctico si el proyecto es grande.

Algo muy interesante es poder automatizar  esto de alguna manera, ya sea por Ant, CruiseControl, phpUnderControl o algún cron. Si lo corremos de vez en cuando se pierde su sentido. Las opciones de Ant, CruiseControl y phpUnderControl las dejare para más adelante, veremos como cronear/automatizar esta tarea de forma sencilla.

Primero debemos crear un archivo sh con lo siguiente

#!/bin/sh
phploc --log-xml /home/freddy/public_html/pruebas/logs/logPhpLoc_`date +%Y%m%d`.log --exclude /home/freddy/public_html/pruebas/logs/ /home/freddy/public_html/pruebas/ > /dev/null

La salida la direcciono a un dispositivo nulo para que no muestre nada en pantalla, es un script sencillo y básico pero ustedes pueden hacerlo como mas les guste ;)

La particularidad que tiene es que lo exporta a un xml y su nombre el concatena la fecha actual para que no se vayan pisando. (otra opción es ir creando carpetas donde se guardan este y toso los demas test al estilo anyo/mes/dia)

Para cronearlo podemos hacerlo desde consola o con algun editor gráfico como puede ser gnome-schedule (se instala desde Synaptic).

Para que lo automatizamos?

Principalmente para ver el estado del proyecto, no veremos si existe un desvío de tiempos o si lo que se desarrollo cumple con los requerimientos, pero si podremos ver como va creciendo el proyecto, su velocidad de crecimiento en cantidad de clases/metodos, el aumento de complejidad algorítmica, la cantidad de clases de test que se realizaron en al etapa de testeo por ejemplo, podriamos saber en que sprint hubo un pico de clases nuevas lo cual podría indicar que el backsprint no fue correctamente seleccionado o estimado, etc.

Como verán se lo puede exprimir bastante, queda a vuestra voluntad y criterio si les es útil o no.