SonarQube¶
Es una herramienta que permite realizar un análisis estático de código. Lo que hace es identificar los puntos susceptibles de mejora, que facilitarán la obtención de métricas necesarias para la optimización del código.
¿Qué información nos puede mostrar una herramienta como SonarQube?¶
Quality Gate¶
Son una serie de condiciones (reglas) que el proyecto analizado debe cumplir para poder pasar a una siguiente etapa, allí básicamente se busca responder a la pregunta: ¿Puede este código seguir avanzando en el ciclo de desarrollo?
Bugs y vulnerabilidades¶
Hacen referencia tanto a puntos de fallo reales o potenciales en el software, como a puntos débiles de seguridad que pueden ser usados como foco de un ataque.
Code smells¶
Es un indicativo de que quizás no estamos escribiendo código de la mejor manera, lo que puede ocasionar algún problema en el futuro y un problema de trasfondo, normalmente problemas de mantenibilidad del código. Lo anterior no quiere decir que el código contenga errores o bugs, pero sí puede aumentar el riesgo a errores o fallos El concepto de code smells está muy asociado con la deuda técnica, esta hace referencia a la cantidad de tiempo que tardaríamos en mejorar algunos detalles identificados por SonarQube.
Coverage¶
La cobertura de código es una medida que permite conocer el porcentaje de código que ha sido probado o validado por tests. Usualmente se desea obtener una mayor cobertura para tener menos probabilidad de introducir errores en el código.
Tutorial Sonarqube¶
Ingresar¶
Podemos ver el análisis de Sonarqube ingresando a al SonarQube de la empresa y accediendo con nuestras credenciales de Azure Active Directory omitiendo el @andreani.com
Identificar¶
Una vez dentro, debemos buscar nuestro proyecto.
Por convención el nombre de nuestro proyecto es {organización}_{repositorio}
Ej. architecture-it_TemplateCleanArchitecture
Leer análisis¶
Antes de ver el análisis debemos elegir la rama a la cual queremos ver su análisis.
En sonar tenemos dos tipos de análisis New Code
y Overall Code
New Code¶
Refleja el análisis del código que fue incluido recientemente.
Overall Code¶
Refleja el análisis histórico, esto significa que puede que existan bugs que fueron encontrados en análisis previos y no fueron corregidos
Análisis fallido¶
Cuando nuestro desarrollo no cumple con el QualityGates, Sonar lo identificará de la siguiente manera.
Interactuando con la web podemos acceder a ver los problemas que detectó el análisis.
Por ejemplo:
Configuración General¶
Carpetas Omitidas en SonarQube de Analisis¶
Estas carpetas son omitidas en el análisis de SonarQube, así que no pasan por ninún tipo de analisis. Ver más acerca de exclusiones
**/Andreani.ICS.Common/**
**/Andreani.ICS.Data/**
-
**/Andreani.ICS.ServiceHostSinIntegra/**
-
next.config.js
stories/**
scripts/**
src/config/**
*.config.[tj]s
Exclusiones de archivos de código fuente¶
Estos archivos/carpetas se omiten cómo código fuente en el análisis de SonarQube.
**/*.spec.[tj]sx?$
**/*.test.[tj]sx?$
**/*_test.go
**/Migrations/*.cs
**/Domain/**
**/*.stories.*
**/*.config.*
stories/**
scripts/**
*.config.js
next.config.js
Exclusiones de archivos de Test¶
Estos archivos/carpetas se omiten cómo archivos de test en el análisis de SonarQube.
**/lib/**
**/Controllers/**
**/Startup.cs
**/Program.cs
**/Domain/**
**/Migrations/*.cs
**/*Test/**
**/*.config.*
**/*.prepare.*
**/*.stories.*
**/store/**
src/icons/**
**/Application/Common/**
**/Infrastructure/Persistence/**
Exclusiones de Coverage¶
Estos archivos/carpetas se omiten cómo archivos que necesitan coverage en el análisis de SonarQube.
**/Controllers/*.cs
**/Startup.cs
**/Program.cs
**/Domain/**
**/DependencyInjection.cs
**/Infrastructure/Persistence/Configurations/**
*Exception.cs
**/Infrastructure/Boopstrap/*.cs
**/Infrastructure/Persistence/**/*.cs
**/Application/Common/**
**/Infrastructure/Services/*.cs
**/Infrastructure/**/*Query.cs
-
**/Controllers/**/*.cs
-
**/adapters/**
**/constants/**
**/interfaces/**
**/layout/**
**/routes/**
**/services/**
**/skeletons/**
**/test-utils/**
**/App.tsx
-
**/*.d.ts
-
**/monitor.ts
**/msalInstance.*
**/sample.test.js
**/setupTests.ts
**/tsconfig.json
**/assets/**
**/styles/**
-
**/setupNextImage.tsx
-
**/repository/*.go
**/repository/mock/*.go
**/controller/*.go
**/main.go
**/models/*.go
**/api/*.go
**/dtos/*.go
**/docs/**
**/utils/*.go
**/global/*.go
**/cron/*.go
**/errores/*.go
src/bootstrap.tsx
**/store/**
**/__test__/**
src/index.tsx
src/reportWebVitals.ts
config-overrides.js
*Event.cs
*Vm.cs
*Dto*
__test__/**
src/icons/**
**/__mocks__/**
Exclusiones de duplicacion¶
Estos archivos/carpetas se omiten del analisis de líneas duplicadas en el analisis SonarQube.
-
**/Infrastructure/Persistence/Configurations/**
-
**/__mocks__/**.tsx
**/__mocks__/**.jsx
**/__mocks__/**.js
**/__mocks__/**.ts
**/*.stories.jsx
**/*.stories.tsx
**/carga_inicial/**
**/constants/**
**/store/**