Que es SonarQube y como nos ayuda para medir la calidad de nuestro código

Manuel Ortega Carcamo
4 min readJan 15, 2020

Como desarrollador estoy en una búsqueda constante de mejorar mi código, buscar buenas prácticas, probar patrones de diseño y de arquitectura que permitan que mi código sea más legible y óptimo. SonarQube es una excelente herramienta que si bien nació para Java, después se extendió a otro lenguajes como Javascript 🤘y nos ayuda con mediciones de calidad a nuestro código

Como es un tema extenso, separe este tema en varios artículo que son los siguientes:

1).- Que es SonarQube
2).-Dockerizando SonarQube
3).-Configurando un proyecto ReacJs — Pronto Disponibles
4).-Configurando un proyecto NodeJs — Pronto Disponibles
5).-Configurando un proyecto Java en SpringBoot — Pronto Disponibles

Que es SonarQube

Es una plataforma para evaluar la calidad del código fuente, realizando un análisis estático sobre dicho código, con el objetivo de advertirnos sobre diferentes puntos a mejorar y obtener métricas que nos ayudan a mejorar nuestro código.

El análisis estático corresponde al proceso de evaluar un software sin ejecutarlo, debo mencionar que si pretendemos evaluar la cobertura de los test estos se deben ejecutar.

En los aspectos que SonarQube nos ayuda son los siguientes:

Código duplicado

Nos entrega métricas relacionadas al código duplicado en nuestro código. Entendemos por código duplicado a una secuencia de código fuente que ocurre más de una vez

La duplicación de código es generalmente considerada una señal de estilo de programación pobre o perezosa , ya que un buen desarrollo está más asociado a la reutilización del mismo. Su principal desventaja es que la mantención se convierte en una tarea mucho más costosa

Más información: https://es.wikipedia.org/wiki/C%C3%B3digo_duplicado

De esta forma nos muestra SonarQube el código duplicado

Código muerto

Es el código que se encuentra en nuestra aplicación, pero nunca es utilizado. Normalmente aparece después de hacer refactor en nuestro código.

Más información: https://es.wikipedia.org/wiki/C%C3%B3digo_muerto

De esta forma se visualiza en SonarQube los bloques de código que nunca son ejecutados y que podemos refactorizar

Estándares de codificación

Se refiere a convenciones para escribir código fuente, las cuales frecuentemente son dependientes del lenguaje de programación.

Las convenciones más comunes hacen referencia a: nombres de variables, indentaciones, espaciado, etc

Más información: https://es.wikipedia.org/wiki/Estilo_de_programaci%C3%B3n

Bugs

Un bug es un error o un defecto en el software que hace que un programa funcione de forma incorrecta.

Más información: https://es.wikipedia.org/wiki/Error_de_software

Complejidad ciclomática

Es una métrica de calidad software basada en el cálculo del número de caminos independientes que tiene nuestro código.

Cuanto más compleja sea la lógica de un código, más difícil será de entender, mantener y probar.

Más información: https://es.wikipedia.org/wiki/Complejidad_ciclom%C3%A1tica

Comentarios

Los comentarios son añadidos usualmente con el propósito de hacer el código fuente más fácil de entender con vistas a su mantenimiento o reutilización.

Una mala o escasa documentación puede convertir el mantenimiento del código en una tarea muy costosa.

Al igual que ocurre con los tests, un gran porcentaje de comentarios no asegura calidad. Los comentarios deben ser buenos y aclaratorios explicando interfaces públicas, pero no lógica ni diseño.

Tests unitarios y de integración

Son una forma de comprobar el correcto funcionamiento de una unidad de código y de la integración de mismos.

Facilitan los cambios en la aplicación, ya que las pruebas nos aseguran que los nuevos cambios no han introducido errores en partes de código desarrolladas anteriormente y que están cubiertas por estos.

Por otro lado, documentan el código, siendo un libro abierto sobre el funcionamiento del código.

Más información: https://es.wikipedia.org/wiki/Pruebas_de_software

Cobertura de código (Coverage)

La cobertura de código es una medida que nos indica el porcentaje de código validado por los tests. Generalmente con una mayor cobertura aseguramos que no se introducen errores en una mayor parte del código, pero esto dependerá de la funcionalidad real que cubran los tests.

Más información: https://es.wikipedia.org/wiki/Cobertura_de_c%C3%B3digo

En el dashboard del proyecto en SonarQube se visualiza El Coverage y el porcentaje de Test Unitarios existentes en el proyecto

Si te pareció interesante y útil, sigue leyendo el resto de los artículos:

1).- Que es SonarQube
2).-Dockerizando SonarQube
3).-Configurando un proyecto ReacJs — Pronto Disponibles
4).-Configurando un proyecto NodeJs — Pronto Disponibles
5).-Configurando un proyecto Java en SpringBoot — Pronto Disponibles

--

--

Manuel Ortega Carcamo

Software Engineer, Full Stack developer, passionate about code, Surfing, Snowboard. Mostly working with Javascript and Nodejs