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
¿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:
• 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.
• 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 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.
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.
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.
3. Luego de descargar, se descomprimen en el equipo:
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:
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
Listo, ya estás en 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”
• En el apartado “Variables del sistema” dar doble click en “Path” y agregar nueva variable:
• 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
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:
• 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:
• Luego dentro de SonarQube debemos crear un nuevo proyecto manual:
• Y debemos ingresar el nombre del proyecto
• Teniendo lo anterior, configuramos la segunda parte del archivo sonar-scanner.properties y le agregaremos las rutas de un proyecto en java:
• Finalmente, abrimos una consola CMD y ejecutamos el siguiente comando:
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.