Actualmente, el plugin
SCM Activity de
SonarQube no soporta oficialmente
Team Foundation Server (TFS), por lo que, hasta ahora, era imposible acceder a este repositorio para extraer la información que SCM Activity puede proporcionar. En este artículo explicamos cómo poder extraer la información necesaria sobre los commits, utilizando
GitTfs. Esta herramienta es un puente entre nuestro servidor TFS y SCM Activity Plugin, y para utilizarlo debemos seguir los siguientes pasos.
La instalación, configuración y uso de GitTfs se ha realizado en sistemas operativos Windows
Instalación de Git- Descargar Git de la página oficial
- Con la instalación por defecto funciona correctamente
- Añadir a la variable de entorno PATH varias rutas
- <Git path>\bin
- <Git path>\cmd
Instalación de GitTfsPara realizar esta tarea existen dos formas de instalar esta herramienta, desde la página oficial o a través de la aplicación Chocolatey. Ambas formas de instalar GitTfs son muy sencillas, por lo que utilizar una u otra dependerá de nuestras preferencias. En excentia hemos probado las dos opciones y hemos conseguido que la herramienta funcione a la perfección en ambas. Explicamos las distintas opciones a continuación:
Desde la página oficial- Descargar GitTfs y descomprimirlo en una carpeta
- Añadir a la variable de entorno PATH la ruta donde se ha descomprimido
Con ChocolateyPara quien no conozca esta aplicación,
Chocolatey es un gestor de paquetes similar a apt-get de Linux, pero pensado para Windows.
Si queremos utilizar este sistema debemos seguir los siguientes pasos:
- Instalar Chocolatey desde la página oficial (http://chocolatey.org/) o ejecutar el siguiente comando desde nuestra consola:
@powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%systemdrive%\chocolatey\bincinst gittfs
Utilización de GitTfs
Lo primero que se debe hacer es clonar nuestro repositorio TFS en el directorio deseado. Para ello, debemos ejecutar desde línea de comandos la siguiente instrucción desde la línea de comandos:
git tfs clone <serverPath> <projectPath> <localPath> -u=<username> -p=<password>
Esta tarea puede durar desde unos pocos minutos hasta varias horas, todo depende del tamaño de nuestro repositorio y de la cantidad de commits que se han realizado en él, porque con este comando se extrae toda la información posible del repositorio (fecha de cada commit, usuario de cada commit, comentario de cada commit, ficheros por commit, etc).
Aquí tienes un ejemplo:
git tfs clone http://123.45.67.89:8080/tfs $/GlobalProject/Project C:\TfsRepository\GlobalProject\Project -u=user -p=password
Una vez hecho esto, cada vez que haya un nuevo commit en el repositorio, nosotros también querremos tener este nuevo cambio, por lo que deberemos actualizar a la última versión. Para ello, haremos un pull, para que así solo se descarguen los últimos commits realizados en el repositorio. Ejecutaremos desde línea de comandos la siguiente instrucción:
cd <localPath>
git tfs pull
Aquí tienes un ejemplo:
cd C:\TfsRepository\GlobalProject\Project
git tfs pull
Si seguimos todos estos pasos, tendremos un repositorio TFS sincronizado en Git para poder realizar los análisis y extraer la información de los desarrolladores, algo que hasta ahora no podíamos hacer.
Análisis del proyecto
Si vamos a realizar el análisis desde el directorio en el que tenemos el repositorio de Git, sonar-runner reconocerá el tipo de control de versiones utilizado y tan solo deberemos añadir los parámetros sonar.scm.enabled y sonar.scm-stats.enabled y asignarlos a true
Aquí tienes un ejemplo:
sonar.scm.enabled=true sonar.scm-stats.enabled=true
En definitiva, si seguimos los pasos descritos en el artículo, podremos llegar a conectar
Team Foundation Server con
SCM Activity Plugin a través de
Git, consiguiendo además, que nuestro
DevTeam Plugin muestre información detallada de los desarrolladores.
Enlaces de interés
Por último, incluimos una serie de enlaces que pueden resultar de utilidad para completar y complementar la información de este artículo: