Arquitectura, buenas prácticas y desarrollo sobre la nueva herramienta de Microsoft SharePoint 2016

Integrando SonarQube con TFS I

En este artículo vamos a ver qué es SonarQube, qué papel tiene dentro del ciclo de vida de nuestras soluciones y cómo se integra con nuestro repositorio de código fuente. En nuestro caso, con Team Foundation Server 2015 en adelante TFS.

En ENCAMINA lo estamos utilizando para ver cual es el progreso en nuestros desarrollos para cada día ser mejores profesionales.

¿Qué es SonarQube?

SonarQube es una plataforma abierta para gestionar la calidad del código. Como tal, cubre los 7 ejes de la calidad del código:

7axes

Sonar es principalmente un portal Web que almacena todo acerca de nuestras soluciones y nos facilita navegar con todos estos datos.

El portal web se compone de cuadros de mando personalizables, hechos mediante widgets, que pueden mostrar los datos en diversas formas, con la posibilidad de comparar fácilmente con la anterior, o ver la progresión a través de los últimos días o meses. Desde mi punto de vista, esta característica es muy importante.

Uno de los problemas con el que nos encontrábamos al finalizar un proyecto era analizar la calidad del desarrollo mediante un code-review. Pero ahora podemos indicar si es bueno o no. Pero, ¿cómo podemos saber la evolución? ¿Haciendo code-review cada semana, cada día…? La verdad es que no es una opción a tener en cuenta, además ni siquiera el objetivo principal de un code-review es ese. Con Sonar podemos ver la evolución entre distintos periodos y tener toda esta información.

Otra de las características es que nos indica el incumplimiento de cualquier métrica que nos marca la línea de código en la que se produce y, sobre todo, nos indica la razón de por la que está mal (con lo cual tenemos información para no volver a cometer ese error).

Por otro lado, también se pueden definir perfiles de calidad y asignarlos a cada proyecto. De esta forma podemos valorar si el proyecto es aceptable o no. Esta definición de calidad se basa en el cumplimiento o incumplimiento de ciertas métricas, como pueden ser: % de cobertura demasiado bajo, número de errores críticos, deuda técnica, etc.

¿Por qué utilizar Sonar?

En ENCAMINA tenemos montado un sistema de builds, en el que cada vez que se sube un cambio al repositorio de código fuente, analizamos si el código subido tiene la calidad que consideramos óptima. Para analizar nuestra calidad, utilizamos herramientas como StyleCop, JSHint para JavaScript, TSHint para TypeScript o SPCAF  para desarrollos en SharePoint/Office365.

Esta build sale verde, amarilla o roja dependiendo del código subido. En el caso de que la build sea OK, la integramos diariamente en nuestro servidor de integración. Para que todo el mundo dentro de la oficina sepa como van nuestros desarrollos en curso, hemos creado una aplicación Universal que tenemos alojada en una RasperryPI y muestra el estado de las Builds.

WP_20151125_16_58_05_Pro

Ahora bien, todo esto está muy bien para nuestro día a día, pero… ¿Cómo podemos medir cuanto hemos mejorado? ¡Aquí es donde entre en juego Sonar!

El papel de Sonar es analizar todos estos datos, poder consultarlos y conseguir ser mejores profesionales cada día. El papel de Sonar quedaría reflejado en el siguiente diagrama:

Integrando Sonar con TFS

Para integrar Sonar con TFS, en primer lugar tendremos que tener instalado Sonar Server en una máquina. Para ello, podemos descargarnos los fuentes desde la siguiente url. No hace falta una máquina con muchos recursos, ya que se puede instalar en muchos sistemas operativos y en muchas bases de datos (Oracle, SQL Server, MySql,..). En nuestro caso, hemos optado por un servidor Windows Server 2012 R2 y una base de datos SQL Server 2012.

*NOTA: Esta máquina se puede instalar en el mismo servidor que en TFS (aunque no es aconsejable).

Una vez tenemos instalado Sonar Server, el siguiente paso es instalar Sonar Scanner. Esta herramienta la tenemos que tener instalada dentro de nuestro servidor TFS. Cada vez que realizamos una compilación, Sonar recopila toda la información que genera la Build y la envía a Sonar Server para procesarla y tener disponible toda la información sobre nuestra deuda técnica. Personalmente, este término no me gusta y prefiero llamarlo nuestro margen de mejora (que creo que es un término mucho más apropiado).

Para realizar la comunicación de Sonar Scanner, debemos añadir dentro de nuestra build que ejecute antes de compilar el siguiente código:

MSBuild.SonarQube.Runner.exe begin /k:"sonarqube_project_key" /n:"sonarqube_project_name" /v:"sonarqube_project_version"

Cuando finalice de ejecutar la build, tiene que ejecutar el siguiente código:

MSBuild.SonarQube.Runner.exe end

Si quieres entrar en detalle de cómo configurar, puedes descargarte la siguiente guía muy detallada escrita por Visual Studio ALM Rangers.

Pero, ¿lo puedo integrar con Visual Studio?

Toda esta información está muy bien, pero al final lo que los developers queremos es tener en nuestro Visual Studio todas estas herramientas para poder solucionar/aprender todas estas cosas en el momento que se guarde el código fuente.

Hay herramientas como ReSharper que son de gran ayuda. El inconveniente es que es de pago. Ahora bien Sonar para Visual Studio 2015 (aprovechando la liberación de Roslyn) ha creado una extensión llamada Sonar Lint que nos incorpora todos los warnings (errores dentro de nuestro IDE), con lo que es de gran utildad.

Resumen

Sonar es una gran herramienta Open Source, fácil e intuitiva que permite incrementar la calidad en nuestros desarrollos y, sobre todo, nos proporciona ver cual es nuestra evolución y cuales son nuestras carencias con la finalidad de mejorar constantemente. Este es uno de las grandes retos de todas las personas que nos dedicamos profesionalmente a la tecnología. Tenemos claro que debemos de mejorar día a día 😉

mm

Sobre Adrián Díaz

Adrián Díaz es Ingeniero Informático por la Universidad Politécnica de Valencia. Es MVP de Microsoft en la categoría Office Development desde 2014, MCPD de SharePoint 2010, Microsoft Active Profesional y Microsoft Comunity Contribuitor 2012. Cofundador del grupo de usuarios de SharePoint de Levante LevaPoint. Lleva desarrollando con tecnologías Microsoft más de 10 años y desde hace 3 años está centrado en el desarrollo sobre SharePoint. Actualmente es Software & Cloud Architect Lead en ENCAMINA.
Esta entrada ha sido publicada en alm, buenas practicas y etiquetada como , , . Enlace permanente .

Suscríbete a Desarrollando sobre SharePoint

Recibe todas las actualizaciones semanalmente de nuestro blog

You have Successfully Subscribed!

ENCAMINA, piensa en colores