Mejorando la calidad software
mediante el análisis del proceso de revisión
El proceso de revisión de código está considerado
como una buena práctica de programación ágil, y cada
vez son más los proyectos que están incorporando
este tipo de técnicas en su proceso de desarrollo.
La motivación principal de este Trabajo Fin de Máster
es desarrollar una herramienta que permita evaluar
de forma gráfica cómo se está realizando el proceso
de revisión de código en diferentes proyectos para poder
mejorarlo (por ejemplo escogiendo los revisores adecuados) y
con ello, obtener en última instancia un software de mejor
calidad, con menos errores, y por tanto, más seguro.
Los datos utilizados por nuestra herramienta son extraídos
de GitHub, a través de su
API REST.
GitHub es actualmente la mayor plataforma de desarrollo
colaborativo, los mayores repositorios software open-source
se encuentran alojados en ella. Además, entre sus diversas
funcionalidades, GitHub cuenta con un completo sistema
para realizar revisiones de código integrado en sus
pull requests. Por todo ello estimamos que GitHub
era la fuente de datos perfecta para nuestra aplicación.
Premio al mejor TFM 2018
Premio SISTEDES y Accenture technology al mejor Trabajo Fin de Máster sobre "Metodologías y herramientas para el desarrollo software" , Edición de 2018.
Extracción de datos desde GitHub
Como la mayoría de API's actuales, la API REST de GitHub, limita el número máximo de peticiones por hora. Actualmente este límite es de 5000.
Para gestionar ese límite, se ha desarrollado un gestor interno que es capaz de encolar solicitudes de extracción de datos, procesarlas mientras haya peticiones disponibles, y esperar a que se reinicie el límite cuando se hayan consumido todas.
Caracterización de repositorios
La aplicación permite al usuario caracterizar
diferentes repositorios (previamente solicitados a GitHub)
mediante diferentes gráficos para comparar un
repositorio frente a la media en términos cuantitativos
como número de estrellas, número de forks, etc.
Otros gráficos describen como se está realizando el proceso
de revisión a lo largo del tiempo, o bien
como se utiliza el sistema de pull requests en ese repositorio
concreto, etc.
Caracterización de pull requests
La aplicación también permite caracterizar diferentes pull requests mediante diferentes gráficos sobre comparativas de tamaño (por ejemplo líneas añadidas vs eliminadas) y sobre comparativas frente a la media.
Caracterización de usuarios
La caracterización de usuarios (revisores)
puede resultar especialmente útil para mejorar
el proceso de revisión.
Permite comparar usuarios en términos de
revisiones, pull requests y comentarios de revisión.
Exportación de CSV
Además del análisis visual que ofrece la herramienta, es posible exportar todas las revisiones de un repositorio en formato CSV para utilizarlas para otros fines (por ejemplo text mining)
API REST pública
Los datos utilizados por la aplicación web
para crear los diferentes gráficos pueden
ser obtenidos en formato JSON a través de
la API REST pública que expone la herramienta.
El manual de uso de la API se encuentra
disponible en la wiki.