Saltar a contenido

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?

ci

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

ci

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.

ci

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.

ci

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

ci

Análisis fallido

Cuando nuestro desarrollo no cumple con el QualityGates, Sonar lo identificará de la siguiente manera.

ci

Interactuando con la web podemos acceder a ver los problemas que detectó el análisis.

Por ejemplo:

ci


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/**