Está en la página 1de 15

¿QUÉ ES

SONARQUBE?
por Antonio Calero
SONARQUBE

CALIDAD

SOFTWARE

Hace mucho tiempo que SonarQube se ha convertido


en un estándar de facto como herramienta de mejora
de la calidad de producto software. Pero, ¿sabemos
exactamente qué es SonarQube?
Durante los dos días que pase en Madrid en las jornadas de calidad de
producto software mucha gente hablaba de SonarQube, de cómo lo
utilizaban, lo comparaban con otras herramientas, se cuestionaban su
coste, ... pero es sorprendente como mucha gente no sabe en realidad qué
es SonarQube y uno se da cuenta de eso cuando te encuentras con
comentarios como que “solo sirve para Java”, que "solo integra
herramientas como PMD, Findbugs, Checkstyle", "que necesita Maven para
hacer análisis", que "no se integra con IDEs", ...

Así que, siguiendo los pasos de Patroklos con su artículo original, he


decidido trasladar sus principios aquí, he añadido algunos más, y espero
que sirva para aclarar todos esos conceptos.
Para eso vamos a definir qué es SonarQube definiendo lo que NO es:

 SonarQube NO es una herramienta de construcción.


Hay muchas herramientas disponibles ahí fuera que ya
hacen las cosas tremendamente bien, como pueden ser:
Maven, Ant, Gradle, etc. SonarQube espera que antes de
analizar un proyecto, el proyecto haya sido compilado y
construido con tu herramienta favorita. SonarQube no es
intrusivo en el proceso de desarrollo, no tienes que
cambiar tu forma de construir tus proyectos.

 SonarQube NO es (solamente) una herramienta de


análisis estático de código. SonarQube no sustituye a
Findbugs o a CPPCheck o cualquier otra herramienta
similar. Todo lo contrario, SonarQube, además de ofrecer
su propio motor de análisis estático de código, permite
integrarlo con todas esas herramientas externas. La
consecuencia es que puedes obtener de forma
homogénea, y agrupada todas las evidencias detectadas
por esa gran variedad de herramientas de análisis estático
y dinámico. Todo integrado en un único cuadro de
mandos.

 SonarQube NO es una herramienta de cobertura de


código, claramente no lo es. Igual que antes, se integra
con las herramientas más populares de cobertura de
código como JaCoCo, Cobertura, PHPUnit, NCover, … pero
no calcula la cobertura de código de forma propia.
Simplemente lee los informes de pruebas pre-generados y
los muestra en un cuadro de mando más usable y
conveniente. Una vez más, SonarQube, no es intrusivo en
el proceso de desarrollo, si ya estás haciendo pruebas
unitarias, basta con que le digas donde están los
resultados.
 SonarQube NO es una herramienta de formateo de
código. Nunca modificará una sola línea de código de tu
proyecto. Lo que si que puede hacer es revisar el estilo
para ver si cumple con ciertas convenciones de código,
puedes utilizar tus reglas de Checkstyle, CPPCheck,
ScalaStyle, … o implementar las tuyas propias.

 SonarQube NO es solo otra herramienta de revisión


manual de código. Por supuesto que ofrece un
mecanismo que facilita la revisión de código, pero no solo
eso. Esta muy ligado al mecanismo de detección de
evidencias de incumplimiento de buenas prácticas, por lo
que cada revisión de código puede asociarse fácilmente a
la parte concreta del código problemático y al
desarrollador que lo ha escrito.

 SonarQube NO solo gestiona la calidad del código


Java. Esa época se acabo hace mucho tiempo. Por
defecto, en su versión “community” puedes analizar código
en los lenguajes más populares de hoy en día: Java,
C#.NET, JavaScript, PHP, … y si necesitas más, existen
otros plugins opensource y comerciales para cubrir hasta
más de 20 lenguajes de desarrollo. No dejes que te
engañen, SonarQube ya es independiente de la tecnología
de desarrollo y no está ligado a Java.

 SonarQube NO necesita Maven para analizar tu


proyecto. Hace ya mucho tiempo que se desacopló de
Maven, aunque por supuesto, puedes seguir usándolo. La
realidad es que SonarQube dispone de un analizador
autónomo (sonar-runner) que se encarga de llevar a cabo
todo el análisis independientemente de tu tecnología y de
tus herramientas de construcción. SonarQube nunca te va
a pedir que cambies absolutamente nada en tu proceso de
desarrollo, simplemente debes añadir un paso más para la
inspección de código y empezar a medir.

 SonarQube NO solo usa reglas para validar la


calidad. Además de las reglas, calcula muchas métricas
referentes al código fuente (complejidad, código duplicado,
deuda técnica, ...) y permite extender la funcionalidad
para crear tus propias métricas y tus propios modelos de
calidad.

 SonarQube NO solo permite ver la calidad desde la


aplicación web. Por supuesto que cualquiera que quiera
conocer todos los detalles de la calidad de su producto
puede acceder vía web a la herramienta, ¿pero qué pasa
con los desarrolladores? Los desarrolladores siempre están
trabajando con su IDE favorito y no les gusta cambiar.
SonarQube provee de extensiones para los principales
IDEs (Eclipse, IntelliJ, VisualStudio) de forma que los
desarrolladores no tengan que salir de su entorno favorito
para saber si están haciendo las cosas con los niveles de
calidad adecuados. Es más, los desarrolladores pueden
incluso ejecutar análisis locales para así revisar las
evidencias antes de subir el código al control de versiones.

Así que después de todo esto, ¿qué podemos decir que es SonarQube?

SonarQube es una plataforma de gestión de la


calidad del código que permite a los equipos de
desarrollo gestionar, hacer seguimiento y
mejorar la calidad de su código fuente.

Es una herramienta que mantiene datos


históricos de una gran variedad de métricas y
proporciona tendencias de los indicadores de
referencia para no cometer los pecados
capitales del desarrollo de software.

Espero que con este artículo queden resueltas muchas de las dudas que
han surgido durante las jornadas de calidad de producto software... y si
todavía quedan algunas, por favor, planteadlas que seguro que podemos
encontrar respuesta entre todos :-)

Mejora de la calidad del código con


SonarQube
Desarrolladores, aquí les explicamos cómo pueden mejorar el proceso de revisión
de calidad de código con SonarQube.

JANUARY 22 2016

IN 9 MINUTES
Mantener un cierto nivel de calidad y legibilidad de código es de crucial
importancia para un desarrollo exitoso en el ambiente de desarrollo dinámico
actual, en el que múltiples equipos trabajan en el mismo código, y se realizan
cambios con frecuencia. Esos ambientes requieren seguir ciertas convenciones de
código para lograr que el código sea entendible para todos los involucrados en el
proceso.

Para nosotros, en Infobip, es fundamental que los productos que entregamos


cumplan con los más altos estándares de calidad. El núcleo de cada producto
es el código fuente. Esto convierte la calidad del código en el factor más
importante para determinar la calidad del producto completo.

Para mantener un control de alta calidad, elegimos implementar la revisión de


código en nuestro proceso de desarrollo. Sin embargo, luego de cierto tiempo,
las revisiones comienzaron a llevar mucho tiempo y desviaban nuestra atención de
otras tareas importantes. La revisión de código consiste no sólo en un proceso de
revisión creativo sino también en un control de errores repetitivos, del uso de las
reglas de convención, etcétera. Se cuestionó el proceso completo, así que una
solución lógica era automatizar una parte.

En nuestros centros de desarrollo, intentamos automatizar tantas tareas manuales


como sea posible para poder enfocarnos en la innovación, que es lo que nos
convierte en la mejor elección para nuestros clientes. En este momento, nuestros
desarrolladores pueden implementar servicios automáticamente, escribir API
públicas con facilidad y rapidez y generar librerías de clientes en diferentes
lenguajes de programación. Nos llevó un largo tiempo encontrar la solución
perfecta para ayudarnos con la automatización parcial de la revisión de código.
Luego de investigar varias herramientas, nos dimos cuenta de que SonarQube
cumple con todos los requisitos.

CARACTERÍSTICAS DE SONARQUBE
SonarQube es una plataforma de código abierto para el análisis de la calidad de
código. Pertenece al conjunto de herramientas de análisis de código estático, junto
con Understand, semmle y otras.

Esta plataforma recibe el código fuente como entrada de datos. Se puede enviar
este código desde IDE o se puede realizar un pull desde SCM. Hay plugins de
SonarQube para los IDE más populares, que hacen que ejecutar los análisis de
código sea más fácil. La plataforma, en base a entrada de datos, comienza a
aplicar reglas predefinidas y a controlar si se cumplen. Como salida de datos de
análisis, se brinda mucha información útil y propuestas de mejoras.

La razón por la cual elegimos SonarQube son las numerosas y extensas reglas de
Java. En este momento, existen más de 700 reglas de Java, y esta cantidad
aumenta constantemente. Estamos realizando análisis principalmente en códigos
escritos en Java, pero pueden realizarse fácilmente en códigos escritos en
cualquiera de los otros 20 lenguajes de programación.

Además, puede escribir sus propios plugins si necesita compatibilidad con un


lenguaje específico o si quiere establecer sus propias reglas. Si necesita agregar
sus propias reglas de código, es posible si utilizan expresiones XPath o crean un
nuevo plugin usando Java.

La plataforma SonarQube consiste en cuatro componentes: analizadores,


servidores, plugins instalados en el servidor y, lo que no es menos importante, la
base de datos.
Arquitectura de SonarQube

Los analizadores son responsables de ejecutar el análisis de código línea por


línea. Pueden brindar información sobre deudas técnicas, cobertura de código,
complejidad de código, problemas detectados, etcétera. Los problemas detectados
en el código pueden ser bugs, bugs potenciales o elementos que puedan generar
errores en el futuro, entre otros. Cuando el análisis está listo, se pueden ver los
resultados en la página web albergada en el servidor web de SonarQube. El
servidor web simplifica la configuración de SonarQube, la instalación de plugins, y
brinda una intuitiva vista general de los resultados.
Vista general de los resultados

Existen muchos problemas que se pueden encontrar en un código. Las reglas


difieren y pueden clasificarse en 5 grupos según su severidad: Bloqueador, crítico,
grave, menor e informativo. Así que, si hay un bug o un bug potencial, va a ser
clasificado como problema bloqueador o crítico, y algunos problemas como "los
números mágicos no se deben utilizar" van a ser clasificados con severidad menor
o informativa.

Aquí hay un ejemplo de las reglas más infringidas:

Reglas más infringidas


Lo mejor de SonarQube es que todos los datos se guardan en una base de datos
relacional, con la cual todos los desarrolladores suelen estar familiarizados. La
base de datos elegida por nosotros fue una base de datos MySQL. Esto fue así,
principalmente, porque somos ávidos defensores de las open source technologies.
Si tiene otras preferencias en cuanto a bases de datos, o tiene más experiencia
con otra base de datos, estas son algunas de las que son compatibles:
PostgreSQL, Oracle, etcétera.

CONFIGURACIÓN DE SONARQUBE
La arquitectura de SonarQube permite separar el servidor de la base de datos, e
incluso hacer réplicas de la base de datos e implementar servidores en múltiples
máquinas para obtener más rendimiento y adaptabilidad.

Con fines de prueba, y para probar varias funcionalidades de SonarQube, pueden


probar con un servidor web con una base de datos incrustada y analizar uno o dos
proyectos. Si el entorno está configurado correctamente desde el principio, no
habrá problemas al migrar la base de datos y el servidor de SonarQube desde una
máquina de desarrollo local al servidor. Docker, con sus contenedores, puede ser
útil para esto porque usted puede juntar todo lo que necesite (código, tiempo de
ejecución, librerías del sistema) e implementarlo fácilmente en cualquier otra
máquina. También hay un official SonarQube docker container con una versión
H2 incrustada, así que no hace falta perder el tiempo en crear una propia. Las
bases de datos externas también pueden configurarse, lo cual es necesario para
cualquier trabajo más serio con SonarQube.

Comenzamos con una máquina virtual dedicada y no tuvimos problemas hasta


que la cantidad de proyectos se excedió y comenzamos a analizar códigos todos
los días. Sin embargo, notamos una caída significativa en el rendimiento y un
aumento en la duración del análisis. En ese momento, comenzamos a separar
diferentes capas SQ (arquitectura) en distintas máquinas.

Para comenzar, separamos la base de datos y el servidor Sonar. Hemos aceptado


las recomendaciones de SonarQube para estar en la misma red. Para la
implementación de SonarQube, estamos usando un contenedor docker, que
simplifica la instalación en otra máquina si necesitamos mejores niveles de
rendimiento.

SONARQUBE Y LA INTEGRACIÓN CONTINUA


Como se mencionó anteriormente, nos ocupamos de la automatización e
intentamos emplear menos esfuerzo en cosas que pueden automatizarse para así
tener más tiempo para la parte creativa del trabajo. El análisis de código también
encaja perfectamente en la historia de la integración continua.
Practicamos y predicamos la integración contínua y el desarrollo ágil, así que
así es como luce un proceso de resolución de tareas de nuestro lado:

Comienza cuando un desarrollador (llamémosle “Alisa”) se hace cargo de una


tarea y comienza el progreso. Durante la resolución de la tarea, Alisa ejecuta un
análisis de código en IDE una y otra vez, obtiene los resultados y puede ver si se
cumplen los requerimientos de calidad del código. En lo que respecta a lógica,
necesita controlarlo ella misma. Cuando Alisa está segura de que el código escrito
cumple todos los requisitos, realiza un commit del nuevo código al repositorio y le
pide a Bob que lo revise. Después realizar el commit de los cambios al repositorio
de git, el webhook impulsa un build Jenkins. El build se ejecuta automáticamente,
y el artefacto con la nueva característica está disponible en el repositorio experto
interno y puede implementarse fácilmente en la producción.

Bob revisa el código que escribió Alisa y ejecuta un análisis para determinar si la
calidad del código se encuentra en un nivel deseable. Luego de la interpretación
de los resultados, Bob solo tiene que realizar la parte creativa de la revisión de
código: revisar la lógica. Si todo está bien, la tarea está completa y la nueva
característica está lista para la producción.

Administración de código fuente con servidor CI y SonarQube

En la versión 4.0 se introduce el modo de análisis progresivo. Este modo se


podría usar para controlar si los nuevos cambios van a romper alguna regla de
código importante, y el desarrollador que realizó los cambios debería ejecutarlo.
Antes de la versión 4.0, el desarrollador comenzaba el análisis del proyecto
completo incluso si había cambiado solo dos o tres archivos. Con la nueva
característica, el tiempo necesario para el análisis se acorta significativamente.
Además del nuevo modo progresivo, también tenemos el análisis de proyecto
completo, el análisis línea por línea que envía los resultados al servidor y los
almacena en la base de datos, y el modo de vista previa que realiza el análisis
completo, pero sin almacenar los resultados en la base de datos.

En este momento, estamos utilizando el modo de análisis de proyecto


completo con almacenamiento de resultados para las builds de noche, y el modo
de vista previaluego de cada commit.

Eso brinda una manera de realizar un seguimiento del control de calidad del
código de commit a commit. Además de esto, tenemos datos históricos sobre la
calidad del código, así que podemos analizar cómo varió la calidad durante la
duración del proyecto.

CONCLUSIÓN
Utilizar SonarQube facilita el control de calidad de código y disminuye la cantidad
de bugs reales y potenciales. Los desarrolladores ahora están más enfocados en
la lógica misma y pueden dedicar su tiempo a los requerimientos de análisis de
negocio y a encontrar soluciones óptimas para casos concretos. Además, luego de
su implementación, los gerentes comenzaron a realizar un seguimiento de
métricas porque, basándose en los resultados, creen que es posible tener una
mejor percepción del trabajo de desarrollo.

Como dijo John F. Woods:

Siempre escribe código como si la persona que va a terminar manteniéndolo


fuera un psicópata violento que sabe donde vives.
¿Qué está esperando? Hoy es un gran día para analizar código.

Por Nevena Menkovic, ingeniera en software

SonarQube
Ir a la navegaciónIr a la búsqueda

SonarQube
sonarqube.org

Control de mando de SonarQube

Información general

Desarrollador(es) SonarSource

Última versión estable 7.4


29 de octubre de 2018 (3 meses y 19 días)

Género Análisis estático de software

Programado en Java, Ruby

Sistema operativo Multiplataforma

Plataforma Máquina virtual Java

Licencia LGPL

[editar datos en Wikidata]

SonarQube (conocido anteriormente como Sonar1) es una plataforma para evaluar código
fuente. Es software libre y usa diversas herramientas de análisis estático de código
fuente como Checkstyle, PMD o FindBugspara obtener métricas que pueden ayudar a mejorar
la calidad del código de un programa.2
Funciones[editar]
 Informa sobre código duplicado, estándares de codificación, pruebas unitarias, cobertura
de código, complejidad ciclomática, potenciales errores, comentarios y diseño del
software.3
 Aunque pensado para Java, acepta otros lenguajes mediante extensiones.
 Se integra con Maven, Ant y herramientas de integración continua como Atlassian
Bamboo, Jenkins y Hudson).

Referencias[editar]
1. ↑ Freddy Mallet (20 de marzo de 2013). «SONAR is becoming SONARQUBE». SonarQube
project mailing list. Consultado el 3 de julio de 2013.
2. ↑ Contrôler la qualité de ses projets avec Sonar
3. ↑ «Methods and Tools issue». 1 de marzo de 2010. Consultado el 14 de abril de 2010.

Enlaces externos[editar]
 Página oficial
 Sonar en funcionamiento

¿Qué es SonarQube?
Posted On : 4 mayo, 2017 Published By : Jorge Websec

Algunos lo conocerán únicamente por “Sonar” y otros no sabrán qué es.


SonarQube es una plataforma desarrollada en Java que nos permite realizar
análisis de código con diferentes herramientas de forma automatizada. Como ya
saben desde hace tiempo en QuantiKa14 tenemos cierto afán por las cosas
automatizadas por ello hemos preparado una nueva saga que tendrá el siguiente
indice:

 ¿Qué es SonarQube?
 ¿Cómo instalar SonarQube?
 ¿Cómo configurar nuestro SonarQube?
 ¿Cómo instalar SonarLint en Eclipse?

¿Te imaginas ir auditando el código de tu equipo de desarrollo según van


trabajando? Mantener un cierto nivel de calidad de código es de crucial
importancia para un desarrollo exitoso en el ambiente de desarrollo dinámico
actual, en el que múltiples equipos trabajan en el mismo código, y se realizan
cambios con frecuencia. Esos ambientes requieren seguir ciertas convenciones de
código para lograr que el código sea entendible y legible para todos los
involucrados en el proceso.

Como dijo John F. Woods:

Siempre escribe código como si la persona que va a terminar


manteniéndolo fuera un psicópata violento que sabe donde vives.
¿Qué es SonarQube?

Profundizando un poco más lo anteriormente comentado SonarQube es una


plataforma de código abierto para el análisis de la calidad de código usando
diversas herramientas de análisis estático de código fuente como Checkstyle,
PMD o FindBugs para obtener métricas que pueden ayudar a mejorar la calidad
del código de un programa. También pertenece al conjunto de herramientas de
análisis de código estático, junto con Understand, semmle y otras.

Es una herramienta esencial para nuestra fase de testing y auditoria de código


dentro de nuestro ciclo de desarrollo de nuestra aplicación. Existen muchos
problemas que se pueden encontrar en un código. Las reglas difieren y pueden
clasificarse en 5 grupos según su severidad: Bloqueador, crítico, grave, menor e
informativo. Así que, si hay un bug o un bug potencial, va a ser clasificado como
problema bloqueador o crítico, y algunos problemas como “los números mágicos
no se deben utilizar” van a ser clasificados con severidad menor o informativa. Y
deberá volver a la fase de desarrollo para corregir esas partes de código.

¿Por qué elegir SonarQube?

No solo porque es open source si no también por la cantidad de reglas que


usuarios de la comunidad que le rodea van actualizando constantemente. En este
momento, existen más de 406 reglas de Java, y esta cantidad aumenta
constantemente. Pueden realizarse fácilmente en códigos escritos en
cualquiera de los otros 20 lenguajes de programación. Por ejemplo Python
dispone de 238 reglas.
Conclusión

Si diriges o programas algún lenguaje utilizar SonarQube es fácil de usar e


instalar, ya lo veremos en la siguiente entrada, controlar la calidad de código
permite disminuir la cantidad de bugs reales y potenciales. Los programadores
independientemente del lenguaje que use estará más enfocado a la lógica y no
invertirá tiempo en cuestiones que puede usar para encontrar soluciones óptimas
para casos concretos.

También podría gustarte