Para tener una mejor visibilidad de los muchos proyectos PHP en marcha, para que la producción sea lo más confiable posible y para continuar con el establecimiento de buenas prácticas, instalé la herramienta SonarQube en nuestro entorno de desarrollo. Solo he jugado un poco con él hasta ahora, pero en las primeras impresiones estoy bastante sorprendido de cuánto capta. Y creo que puede ser una herramienta muy interesante para usar y generalizar en el marco de proyectos de desarrollo.
Instalación del servidor
La instalación de SonarQube es bastante sencilla y está bien descrita en el documento o siguiendo este enlace (para Ubuntu).
En resumen, debe crear una base de datos vacía con un usuario asignado. Luego, debe descargar el archivo, extraerlo y modificar el archivo de configuración para ingresar los parámetros de acceso a la base de datos. Si es necesario, también puede modificar el puerto utilizado por la interfaz web (9000 por defecto) y si desea una ruta más allá del nombre del servidor.
Luego, debe recordar mover el controlador jdbc a la carpeta extensions/jdbc-driver desde la raíz de instalación de SonarQube. Por mi parte, después de la instalación tuve un problema para lanzar el servicio la primera vez, pero simplemente porque había cometido un error en el nombre de la base en el enlace jdbc hacia mi base MySQL.
Tenga en cuenta que la herramienta no es un servicio por defecto (y, por lo tanto, no se iniciará con el sistema operativo), pero en el enlace de instalación que le doy arriba, tendrá que hacer pequeñas manipulaciones para iniciarlo como un servicio.
complementos
Es posible agregar una serie de complementos al servidor. Como administrador puedes acceder a la lista de plugins disponibles desde tu instalación, en Ajustes…Sistema….Centro de actualizaciones. Por mi parte instalé los plugins de PHP, Javascript, CSS y Flex que corresponden a las tecnologías que utilizamos en nuestros desarrollos. También instalé el complemento LDAP para poder administrar la conexión a través de cuentas de Active Directory, pero aún no he conectado SonarQube a AD.
Instalación de la herramienta de análisis (sonar-runner)
Ahora tiene un servidor en funcionamiento, puede comenzar a analizar sus proyectos. Para ello, primero deberás instalar la herramienta que te permitirá escanear tus proyectos y conectarte al servidor de SonarQube para guardar los datos que ha recopilado. La herramienta de análisis se llama sonar-runner y si está en Ubuntu puede seguir este enlace para obtener detalles de instalación. La configuración es muy sencilla, hay que darle la url de la interfaz web, el enlace jdbc y el usuario para la base de datos.
Análisis de un proyecto
Para analizar un proyecto, debe crear un archivo de configuración en la raíz de este último llamado «sonar-project.properties». Tienes un ejemplo en la documentación oficial . Básicamente, esto equivale a dar un nombre y una clave al proyecto y la ruta a las fuentes.
1
|
# debe ser único en una instancia de SonarQube determinada sonar.projectKey=my:project # este es el nombre que se muestra en la interfaz de usuario de SonarQube sonar.projectName=Mi proyecto sonar.projectVersion=1.0 # La ruta es relativa al archivo sonar-project.properties. Reemplace "\" por "/" en Windows. # Desde SonarQube 4.2, esta propiedad es opcional si se configura sonar.modules. # Si no se configura, SonarQube comienza a buscar el código fuente del directorio que contiene # el archivo sonar-project.properties. sonar.fuentes=. # Codificación del código fuente. El valor predeterminado es la codificación predeterminada del sistema #sonar.sourceEncoding=UTF-8 |
Una vez creado este archivo, solo hay que llamar al sonar-runner desde la raíz del proyecto: sonar-runner (habiendo puesto previamente la ruta de acceso al mismo en las variables de entorno.
Detalle de análisis
Ha ejecutado el sonar-runner en sus diversos proyectos.
Ahora podrá ir a la interfaz web de SonarQube para obtener el informe de calidad del código. La página de inicio te permitirá tener una visibilidad global de tus proyectos. Todo es configurable a través de widgets, de mi lado pongo la lista de proyectos a la izquierda con los indicadores clave (cantidad de líneas de código, fecha del último análisis, tasa de duplicación, cantidad de errores críticos y mayores), a la derecha el diagrama de bloques ( con los bloques simbolizando por tamaño el número de líneas de código, y el color del bloque dependiendo de la cobertura del código). Al hacer clic en un proyecto, puede consultar el detalle de la calidad del código de este último. De nuevo todo es configurable por widget, por mi parte hasta ahora he desplegado la siguiente información:
Tienes mosaicos que te dan información:
- el número de líneas de código, con la división por archivos, carpetas, funciones, clases
- la tasa de duplicación general y la distribución de la duplicación en líneas, bloques y archivos
- la complejidad del proyecto utilizando métricas McCabe
- errores clasificados por gravedad (crítico, mayor, menor, info) y una estimación de la deuda técnica
- el top de los errores más frecuentes
- historial de análisis
- la clasificación de los errores observados (mantenibilidad, portabilidad, seguridad, usabilidad, etc.)
- y toda una serie de widgets que puedes disponer a tu gusto para crear el cuadro de mando ideal
En cuanto a los errores, puedes sumergirte en las reglas para ajustarlas también a tu gusto para cambiar el nivel de gravedad si es necesario (o integrar estándares de desarrollo que serían específicos para ti) a través de la pestaña «Perfiles de calidad».
Se puede hacer clic en la mayoría de los elementos que encontrará en los widgets y le permiten tener detalles.
Para la duplicación, por ejemplo, podrá hacer clic para bajar al nivel de los archivos en cuestión. Y al hacer clic en un archivo, verá aparecer el código, con una barra naranja al costado para el código duplicado. Al hacer clic en esta barra naranja, tendrá detalles sobre la duplicación (los números de línea si es una duplicación de otras líneas en el mismo archivo, o una referencia al archivo que contiene las mismas líneas) como en la copia de la pantalla a continuación:
Para errores, es lo mismo. Pulsando sobre el número de errores, tendrás el detalle. Puede mostrar, filtrar por idiomas u otros criterios como aquí:
Al hacer clic en un error, tendrá resaltada la línea de código en cuestión, con la posibilidad a través de «…» de tener la documentación sobre el error y ejemplos de código que le permitirán comprender lo que corresponde a la regla de lo que no corresponde .
Automatización de análisis
Lo que puede desear ahora es que el análisis de código se reproduzca regularmente de forma automática.
Por el momento, he programado un escaneo regular de mis diversos proyectos a través de un cron, pero es posible hacerlo mucho mejor. Acabo de hacer una prueba rápida con Jenkins que te permite monitorear un repositorio de Git (ver el artículo sobre Git y SourceTree sobre ). Como resultado, es posible pedirle a Jenkins que monitoree el repositorio de Git de manera regular y que inicie un análisis de SonarQube cuando el repositorio se haya movido (hay un complemento de SonarQube en Jenkins). SonarQube también permite que los usuarios sean notificados por correo electrónico cuando se encuentran errores. En resumen, configurar un canal interesante, este será el tema de un artículo en este sitio un poco más adelante.