Inspección de Código con Sonarqube y mejoramiento de HU - HanstoC/GRUPO10-2025-PROYINF GitHub Wiki

Inspección de código con Sonarqube

En las imágenes incluidas en esta carpeta se muestran los problemas detectados por el analizador de calidad SonarQube. Es importante destacar que el análisis no arrojó problemas de seguridad, y que la mayoría de las observaciones corresponden a aspectos de fiabilidad y mantenibilidad del código.

Las imágenes “general” y “general2” presentan un resumen del estado del proyecto, donde se reflejan las conclusiones mencionadas. En ellas también se observa que solo existe un problema clasificado con severidad alta, el cual se detalla más adelante.

En cuanto a dicho problema de severidad alta, se aprecia en la imagen correspondiente que, si bien para SonarQube tiene una importancia mayor, este se encuentra en un archivo utilizado únicamente para cargar información en la base de datos durante las pruebas internas. Es decir, no forma parte de la lógica principal de la aplicación, por lo que no será considerado dentro de las mejoras priorizadas.

Las recomendaciones que sí se abordaron corresponden principalmente a errores que afectan la fiabilidad del código. El primer ajuste realizado fue reemplazar el uso de parseFloat por Number.parseFloat en distintos servicios del backend, debido a que el uso de la función global puede producir comportamientos inesperados. Como se evidencia en la imagen “erroresParseFloat”, este cambio permite resolver 65 problemas de severidad media.

Tras aplicar esta corrección, se ejecutó nuevamente el análisis en SonarQube, reduciendo la cantidad de problemas de severidad media a 53.

Otro ajuste similar consistió en reemplazar parseInt por Number.parseInt. Antes de este cambio, el proyecto presentaba 53 problemas de severidad media; después de corregir esta práctica, la cantidad disminuyó a 34.

Muchos de los problemas restantes correspondían a temas de consistencia en el uso de funciones estándar. Por ello, se abordaron mejoras adicionales, tales como reemplazar isNaN por Number.isNaN y utilizar imports explícitos (node:path, node:fs) en lugar de los módulos genéricos. Luego de aplicar estos cambios, el número de problemas de severidad media disminuyó a 12.

Finalmente, SonarQube permitió detectar un archivo duplicado que incrementaba artificialmente la cantidad de errores. Tras eliminar dicho archivo duplicado, el análisis aprobó todos los puntos de control, tal como se muestra en las imágenes “LastFix” y “LastFix2”.

** cabe destacar que de igual manera se dejó constancia de lo mencionado anteriormente en la carpeta inspections pero en esta sección se trata de mostrar con mayor claridad **

Mejoramiento de HU

Las mejoras aplicadas se basaron exclusivamente en los problemas reportados por SonarQube dentro del alcance del código relevante para las HUs. Estos ajustes incluyeron la corrección de prácticas no recomendadas como el uso de parseFloat y parseInt globales, la utilización de Number.isNaN en lugar de isNaN, y la falta de imports explícitos de librerías del entorno así como la eliminación de archivos duplicados y otros detalles de consistencia que afectaban la mantenibilidad del proyecto. Cada una de estas correcciones contribuyó a mejorar la calidad técnica del código y a reducir el número de problemas de severidad media y baja reportados inicialmente.

Una vez aplicadas las mejoras, se procedió a realizar una re-inspección completa del código con SonarQube, con el fin de validar que las modificaciones hubieran resuelto efectivamente los issues identificados y que no se hubiesen introducido nuevos problemas de calidad. Los resultados de esta nueva inspección evidenciaron una reducción significativa en el número total de issues, así como la aprobación de los criterios de calidad establecidos por la plataforma.

Estas acciones aseguran que el código incorporado a la plataforma no solo cumple con la funcionalidad solicitada en las HUs, sino que además alcanza un estándar de calidad adecuado, aumentado su mantenibilidad y disminuyendo el riesgo de errores en futuras iteraciones del proyecto.