Extracción de datos de la herramienta SonarQube

González Martín, Sergio (2019). Extracción de datos de la herramienta SonarQube. Proyecto Fin de Carrera / Trabajo Fin de Grado, E.T.S. de Ingenieros Informáticos (UPM), Madrid, España.

Description

Title: Extracción de datos de la herramienta SonarQube
Author/s:
  • González Martín, Sergio
Contributor/s:
  • González Martínez, Ángel Lucas
Item Type: Final Project
Degree: Grado en Ingeniería Informática
Date: May 2019
Subjects:
Faculty: E.T.S. de Ingenieros Informáticos (UPM)
Department: Lenguajes y Sistemas Informáticos e Ingeniería del Software
Creative Commons Licenses: Recognition - No derivative works - Non commercial

Full text

[img]
Preview
PDF - Requires a PDF viewer, such as GSview, Xpdf or Adobe Acrobat Reader
Download (1MB) | Preview

Abstract

El trabajo ha consistido en el desarrollo de una aplicación que sea capaz de extraer los datos de los proyectos de la plataforma SonarQube [1] instalada en la Escuela mediante su API [2] y guardarlos en ficheros estructurados. Estos proyectos tendrán asociada una raíz, por ejemplo Entregable1, que identificará a todas las prácticas de alumnos pertenecientes a ese entregable. Como objetivo secundario, se propuso realizar una interfaz que mostrase esta información extraída en pantalla. El objetivo de esta aplicación es reducir el tiempo que se tarda habitualmente en darles retroalimentación a los alumnos sobre las prácticas que entregan. Además, los profesores utilizan la herramienta SonarQube para valorar el código del alumnado, gracias a la cantidad de información en forma de métricas que esta proporciona. También pueden definir los denominados quality gate, que son umbrales de calidad que marcan el límite para que el valor de una métrica sea erróneo o válido. Para el desarrollo del trabajo ha sido necesario seleccionar las métricas a extraer (por ejemplo, las líneas de código, los code smell o los bugs, entre otras) y decidir en qué tipo de formato iba a almacenarse la información. Se acordó con el tutor que sería en CSV, pero que, en el futuro, esto debería de poder ampliarse para abarcar otros formatos o la inserción en una base de datos. También es importante mencionar que fue necesario crear unos modelos de datos para poder guardar en memoria la información extraída. La aplicación ha sido desarrollada en Java [3], haciendo uso de dos librerías de uso libre: org.json [4] para procesar datos en formato JSON [5] y opencsv [6] para generar ficheros con el formato acordado. Por otro lado, se ha utilizado JavaFX [7] para desarrollar la interfaz de la aplicación. Por tanto, la aplicación cuenta con dos partes bien diferenciadas: por un lado el backend, que se encarga de comunicarse con la API de SonarQube, haciendo uso del token que denota los permisos que tiene el usuario para acceder a cierta información. Una vez realizadas las peticiones y obtenidos los datos sobre los proyectos que se quieren analizar, se generan tres ficheros: un CSV para las métricas, otro para los code smells y un fichero JSON para los quality gate. Además, se almacenan en objetos en memoria los datos, haciendo uso de los modelos previamente mencionados. Y por otro lado el frontend o interfaz, que recoge información introducida por el usuario (como la raíz de los proyectos), para, a partir de ella, realizar la consecuente llamada al backend y poder mostrar la información obtenida en pantalla, en forma de tabla. La interfaz cuenta con un menú de opciones que permite visualizar solo las métricas, solo los code smells¸ solo los quality gate o ver un listado de todos los proyectos y ver su información individual.---ABSTRACT---The project consisted on developing an application which is able to extract information from the projects stored within the SonarQube platform installed in the Faculty via its API. After the extraction, this information should be stored in some kind of structured files. The SonarQube’s projects are identified by a root key, for example Entregable1. As a secondary objective, the application should be able to show this information on screen on a simple and clean way. The main objective of this application is to reduce the time it usually takes to give the students feedback on their exercises. What is more, the professors usually use SonarQube in order to rate these exercises, thanks to the great amount of information this tool provides. Also, professors are able to set up a quality gate, which represents the threshold a metric should respect in order to be considered valid. For the successful development of the application, the student had to select which metrics to extract (number of lines of code, bugs, code smells, among others) and to decide which kind of structured file the application would use. It was agreed with the tutor that the format would be CSV for this project, but the application should be flexible enough to admit more formats or insertions in a database in the near future. Furthermore, it was needed to define some data models in order to store the extracted information in memory. The application has been developed with Java, using some open source libraries such as: org.json for JSON manipulation and opencsv for CSV files generation. For the frontend part of the application, JavaFX was used. Therefore, the application is made up of two parts: on the one hand the backend, which is the one in charge of communicating with SonarQube’s API, putting the access token to good use. This token grants the user the permissions needed to access the information stored on the platform. When all the requests are done, three files are generated (a CSV file for metrics, another one for code smells and a JSON file for quality gates). What is more, the extracted data is stored in memory, using structures like maps and the data models previously mentioned. On the other hand the frontend, which is in charge of gathering user input (such as the root of the projects) in order to invoke the backend. This call to the backend allows the frontend to show the information on screen, using a table format. The interface is composed of an option menu which allows the user to visualize just the metrics, the code smells, the quality gates or a list of all the projects involved in the extraction. The user is also able to select one project and visualize on screen its individual information.

More information

Item ID: 55747
DC Identifier: http://oa.upm.es/55747/
OAI Identifier: oai:oa.upm.es:55747
Deposited by: Biblioteca Facultad de Informatica
Deposited on: 17 Jul 2019 10:59
Last Modified: 17 Jul 2019 10:59
  • Logo InvestigaM (UPM)
  • Logo GEOUP4
  • Logo Open Access
  • Open Access
  • Logo Sherpa/Romeo
    Check whether the anglo-saxon journal in which you have published an article allows you to also publish it under open access.
  • Logo Dulcinea
    Check whether the spanish journal in which you have published an article allows you to also publish it under open access.
  • Logo de Recolecta
  • Logo del Observatorio I+D+i UPM
  • Logo de OpenCourseWare UPM