SonarQube

En el desarrollo de software es muy importante tener en cuenta la calidad del código y del producto o servicio que queremos entregar, por lo que es necesario conocer y aprender de las herramientas que nos permiten validar de manera rápida y sencilla el estado de los códigos y que nos indiquen como podríamos mejorarlo.

Existen varias herramientas como, por ejemplo: Kritika, Klocwork, jarquitecto, bandit, SonarQube, etc. Las cuales ayudan con la evaluación de la calidad del Código dentro del proceso de desarrollo de software.

SonarSource nos brinda varios productos:

o  Sonarlint: Es un agente que nos permite conectarnos con este SonarQube y ejecutar el análisis de forma remota.

o  SonarCloud: Es una plataforma de análisis de código continuo y online con la que puedes analizar tus proyectos y ver los resultados online en la nube.

o  SonarQube

SonarSource

¿Qué es SonarQube?

•  Es una plataforma que nos permite evaluar el código fuente de forma automatizada.

•  Cuenta con una versión comunitaria gratuita y otras ediciones premium de pago.

•  Brinda información sobre código duplicado, estándares de codificación, errores potenciales de código y seguridad, etc.

•  Está integrado con diversas herramientas de análisis estático de código fuente como checklist, PMD Y FindBug. Estas herramientas ayudan a obtener métricas que puedan mejorar la calidad de código de un programa.

•  Analiza y produce resultados para más de 25 lenguajes de programación.

Segregación de severidad

Se clasifican en 5 grupos:

Segregación de severidad

•  Bloqueos: Son errores con una alta probabilidad de afectar el comportamiento de la aplicación.

•  Críticos: Necesita corrección, aunque no necesariamente afecte al comportamiento de la aplicación o puede ser que sea una falla de seguridad de impacto alto.

•  Mayor: Defecto de calidad que puede afectar enormemente a la productividad del desarrollador.

•  Menor: Defecto de calidad que puede afectar ligeramente la productividad del desarrollador.

•  Información: No es un error ni un defecto de calidad, solo es un hallazgo o una mejora.

¿Qué más puede detectar SonarQube?

• Código Duplicado: Código fuente que aparece más de una vez

• Código muerto: Es el código que nunca es utilizado.

• Valida los estándares de codificación: Dependen del lenguaje de programación, pero hace referencia a nombre de variables, espacios, comentarios

• Bugs: error o un defecto en el software que hace que un programa funcione de forma incorrecta.

Métricas de SonarQube:

• Cobertura de código: Indica el porcentaje de código validado por los tests. Generalmente con una mayor cobertura aseguramos que no se generen errores en una mayor parte del código, pero esto dependerá de la funcionalidad real que cubran los tests.

• Issues y reglas: Cuando un componente no cumple con una regla de codificación definidas, se registra un issue.

Hay 3 tipos de issues:

• Bug: un punto de fallo real o potencial en su software.

• Vulnerability: un agujero de seguridad que puede usarse para atacar su software.

• Code Smells: un problema relacionado con la mantenibilidad en el código.

Bug

•   Quality Profile: Son colecciones de reglas que se revisan durante un análisis. Para cada tecnología hay un Quality Profile predeterminado, pero podemos tener varios para un mismo lenguaje.

En caso de que un proyecto analizado no tenga asignado explícitamente uno, se analizará con el perfil configurado como predeterminado para dicho lenguaje.

Quality Profile

•  Quality Gate: Es un conjunto de condiciones que el proyecto debe cumplir antes de que pueda ser enviado a producción. Al igual que ocurre con los quality profiles, es posible establecer un Quality Gate predeterminado.

Quality Gate:

Vistas en SonarQube

Dashboard:

•  Cada proyecto tiene un dashboard, el cual se actualizará después de cada análisis o escaneo.

•  Desde esta vista tendremos información de bugs, vulnerabilidades, puntos de accesos de seguridad, code smells, cobertura y duplicidad.

Issues:

•  Desde esta vista podemos gestionar y obtener más detalles de los issues pendientes de resolver.

•  Accediendo a cada uno de estos issues podemos ver la línea exacta donde se genera, una breve descripción de la misma e incluso ofrecerá una posible solución para solventarla.

Issues

Activity:

•  Se visualiza el historial de ejecuciones y sus resultados.

•  Es muy útil para sacar métricas y poder ir observando la evolución de un proyecto.

•  Podemos customizar esta actividad y obtener varios tipos de gráficos.

activity

Instalación local de SonarQube:

1.  Descargar -> SonarQube (Versión comunity edition)

https://www.sonarqube.org/downloads/

2.  Descargar -> SonarScanner

https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/

3.  Luego de descargar, se descomprimen en el equipo:

descomprimir carpeta

4.  Para ejecutar sonar de manera local, debemos abrir una consola CMD y ejecutar el siguiente comando (Debemos ingresar la ruta en donde se encuentre el archivo StartSonar.bat:

C:\SonarQube\sonarqube-9.0.1.46107\bin\windows-x86-64\StartSonar.bat

CMD

5.  Al indicar Process is UP y SonarQube is UP, nos indicará que el servidor ya fue levantado exitosamente.

6.  Luego accedemos a http://localhost:9000/

En donde podremos ingresar el usuario y contraseña para poder ingresar a SonarQube. Por defecto las credenciales son admin / admin

login

Listo, ya estás en SonarQube!

SonarQube

¿Cómo agregar un proyecto local - java en sonarqube?

Para agregar un nuevo proyecto, se utilizará SonarScanner

1.  Configurar variable de entorno

•  Inicio -> Buscar -> Variables de entorno

•  Acceder al botón “Variables de entorno”

SonarScanner

•  En el apartado “Variables del sistema” dar doble click en “Path” y agregar nueva variable:

variables del sistema

editar variables del sistema

•  Nota: La ruta debe indicar hasta el directorio Bin y dependerá de la ubicación en donde se descomprimió la descarga de sonar-scanner.

•  Luego en una pantalla CMD, debemos ejecutar el siguiente comando para corroborar que la variable de entorno quedo correctamente agregada:

sonar-scanner –h

sonar-scanner –h

2.  Configurar archivo de properties

•  Debemos ingresar a la siguiente carpeta:

<directorio Sonar-Scanner>/conf/

•  En el directorio anterior se encontrará el archivo sonar-scanner.properties, el cual debemos configurar:

directorio Sonar-Scanner>/conf/

•  Abrir en un block de notas o Notepad el archivo sonar-scanner.properties, en el cual debemos validar las siguientes configuraciones

Nota: Si falta alguna variable, se debe agregar:

sonar-scanner.properties

•  Luego dentro de SonarQube debemos crear un nuevo proyecto manual:

nuevo proyecto

•  Y debemos ingresar el nombre del proyecto

nombre proyecto

•  Teniendo lo anterior, configuramos la segunda parte del archivo sonar-scanner.properties y le agregaremos las rutas de un proyecto en java:

sonar-scanner.properties

•  Finalmente, abrimos una consola CMD y ejecutamos el siguiente comando:

sonar-scanner

sonar-scanner

Listo!!! Ya tenemos un proyecto analizado en sonar

Conclusiones

•  SonarQube es una plataforma de gestión de calidad del código que nos permite gestionar, realizar seguimiento, evaluar y mejorar la calidad del código de un proyecto.

•  Es una herramienta que al mantener datos históricos nos puede proveer una gran variedad de métricas.

•  Es importante contar con un evaluador ya sea SonarQube u otro y poder integrarla dentro del flujo de calidad en el desarrollo de un software.

What’s a Rich Text element?

The rich text element allows you to create and format headings, paragraphs, blockquotes, images, and video all in one place instead of having to add and format them individually. Just double-click and easily create content.

Static and dynamic content editing

A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila!

How to customize formatting for each rich text

Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.

Descarga nuestro Clever UI KIT 👇

Acá en Clever Experience trabajamos en un pequeño UI KIT que puede ayudarte en la próxima propuesta rápida, idea o proyecto que debas o quieras desarrollar.
Ingresa tu nombre y correo para descargar.

Gracias. Te será enviado un mail confirmando la inscripción
¡Ups! Algo salió mal al enviar el formulario.