Sonar-Monitoreo de la Calidad del Código y del Proyecto de Código Abierto
Olivier Gaudin, Freddy Mallet, SonarSource, http://www.sonarsource.com
¿Qué es el Sonar ?
Sonar (ahora llamado SonarQube) es una plataforma de código abierto utilizada por los equipos de desarrollo para administrar la calidad del código fuente. Sonar se ha desarrollado con un objetivo principal en mente: hacer que la gestión de la calidad del código sea accesible para todos con el mínimo esfuerzo.
Como tal, Sonar proporciona analizadores de código, herramientas de informes, módulos de búsqueda de defectos y máquina de tiempo como funcionalidad principal. Pero también embarca un mecanismo de complementos que permite a la comunidad ampliar la funcionalidad (más de 35 complementos disponibles), haciendo de Sonar la ventanilla única para la calidad del código fuente al abordar no solo las necesidades de los desarrolladores sino también de los gerentes.
En términos de idiomas, Sonar admite el análisis de Java en el núcleo, pero también de JavaScript, PHP, PL / SQL y Cobol a través de complementos (de código abierto o comerciales), ya que el motor de informes es independiente del lenguaje.
Desde la versión 2.0, el sonar permite cubrir la calidad en 7 ejes y, por lo tanto, informar sobre:
- Código duplicado
- Estándares de codificación
- Pruebas unitarias
- Código complejo
- Errores potenciales
- Diseño y arquitectura
Sonar se puede usar para auditorías únicas, pero se ha diseñado para respaldar la estrategia global de mejora continua de la calidad del código en una empresa y, por lo tanto, se puede depósito central para la gestión de la calidad.
Sitio web: https://www.sonarqube.org/
Versión del producto: Sonar 2.0
Licencia: Soporte para LGPL V3
: Complementos https://www.sonarsource.com/support/
: https://docs.sonarqube.org/display/PLUG/Plugin+Library
¿Por qué debería administrar la calidad del código fuente?
Un programa bien escrito es un programa donde el costo de implementar una característica es constante durante toda la vida útil del programa It Itay Maman
Como introducción rápida, esta es la mejor definición de calidad de código fuente que pude encontrar. Se vuelve aún más fuerte cuando se pone al revés: el programa escrito abadly es un programa en el que el costo de implementar una característica crece a lo largo del tiempo.
Eso suena mal, ¿no?
Todos hemos visto situaciones en las que comienza un nuevo proyecto cuyo objetivo es desarrollar desde cero una aplicación en una tecnología de vanguardia. Todo va muy rápido; primero, segundo, tercer lanzamiento y luego, de repente, la velocidad del equipo comienza a disminuir. La cuarta versión se pospone por tercera vez, arreglar algo rompe algo más…
¿Qué está pasando aquí? Dados los síntomas, podemos suponer que el equipo está sufriendo de deuda técnica, entre otras cosas, y que las partes interesadas no son conscientes de ello y, por lo tanto, no pueden afrontarlo.
Pero lo más probable es que esto se resuelva ya que el proyecto es nuevo, tiene visibilidad y, por lo tanto, alguien se va a encargar de él (al menos eso esperamos).
Pero este ejemplo fue solo un iniciador, ya que nosotros, la gente de TI, no trabajamos la mayor parte del tiempo en aplicaciones cuyo desarrollo comenzó hace menos de 6 meses. Nuestro trabajo consiste principalmente en actualizar las aplicaciones existentes. Ahí es donde la mayor parte del dinero se gasta en ÉL, donde hay menos visibilidad, donde a menudo hay un gran sobre anual para hacer todo lo que podamos, donde hay personas que son clave porque son las únicas capaces de entender el código,donde no tenemos idea de cuánto tiempo tomará un cambio, donde las regresiones son frecuentes y la gente tiene miedo de hacer cambios. Y básicamente no hay atención de ningún tipo por parte de la empresa en eso, ¡solo hazlo!
Administrar la calidad del código fuente se trata de optimizar el ROI, ya que le dará visibilidad y, por lo tanto, más control sobre:
- cuán difícil va a ser el mantenimiento, qué podemos esperar
- el hecho de que las cosas no están empeorando
- el hecho de que se debe prestar cierta atención a la parte crítica del sistema, para aumentar, por ejemplo, la cobertura mediante pruebas unitarias, suprimir ciclos, eliminar duplicaciones
Además, ofrece una copia de seguridad para que los desarrolladores levanten la mano cuando creen que se requiere refactorización que agregaría un poco a un cambio, pero tendría un buen retorno de la inversión.
¿Cómo administrar la calidad del código fuente?
Hay siete ejes técnicos que deben tenerse en cuenta al hacer análisis de código fuente de un proyecto y Sonar es capaz de soportar la gestión de los siete. En el equipo de Sonar, nos gusta llamarlos los 7 pecados capitales del desarrollador:
- incumplimiento de las normas de codificación y las mejores prácticas
- falta de comentarios en el código fuente, especialmente en las API públicas
- tener líneas de código duplicadas
- que tengan componentes complejos o/y una mala distribución de complejidad entre componentes
- que no tengan o tengan una cobertura de código baja por pruebas unitarias, especialmente en partes complejas del programa
- dejar errores potenciales
- tener un diseño espagueti (ciclos de paquetes…)
El primer paso al hacer la gestión de la calidad del código fuente es realmente definir cuáles de esos ejes son importantes para usted y en qué medida.A continuación, sobre la base de la situación actual, se debería establecer un plan para alcanzar el nivel objetivo (que podría ser simplemente mantener un alto nivel de calidad). Muy importante es empezar de a poco y crecer cuando todo el equipo de desarrollo lo adopte por completo.
Ahora, echemos un vistazo a cómo usar Sonar en este enfoque.
Perfiles de calidad
Sonar permite gestionar múltiples perfiles de calidad para adaptar el nivel requerido al tipo de proyecto (solo soporte, proyecto nuevo,aplicación crítica, lib técnica…). La gestión de un perfil consiste en:
activar / desactivar / reglas de codificación de peso
definir umbrales en métricas para alertas automáticas
definir asociación de proyecto / perfil
Paneles
Sonar contiene 2 paneles que ofrecen una visión general para obtener sugerencias sobre posibles problemas y comparar proyectos:
- una vista consolidada que muestra todos los proyectos
- un panel de proyectos también está disponible a nivel de módulos y paquetes
Herramientas de caza
Para confirmar que lo que parece ser un problema es realmente un problema, Sonar ofrece un conjunto de herramientas de caza que permite pasar de la vista general a los detalles más pequeños:
- profundice en cada medida mostrada para ver qué hay detrás de
- nubes de clases para encontrar clases menos cubiertas por pruebas unitarias
- puntos de acceso para tener en una página la mayoría y la menor cantidad de archivos
- y una entrada múltiple (duplicación, cobertura, infracciones, éxito de las pruebas…) visor de fuentes para confirmar los hallazgos realizados con las herramientas de caza
TimeMachine
Sin duda, saber dónde se encuentra una aplicación es muy importante. Pero aún más importante es conocer y comprender su evolución.De hecho, ¿qué vale la pena saber que hay un 20% de cobertura de código por unidades? ¿Es bueno o malo? ¿Es diferente la respuesta si hace dos meses era del 15% o del 25%? TimeMachine permite ver la evolución y reproducir el pasado, especialmente cuando graba versiones del proyecto
¿Cómo funciona el Sonar?
El sonar está hecho de una arquitectura bastante simple y flexible que consta de tres componentes:
- Un conjunto de analizadores de código fuente que se agrupan en un complemento Maven y se activan bajo demanda. Los analizadores utilizan la configuración almacenada en la base de datos. Aunque Sonar se basa en Maven para ejecutar análisis, es capaz de analizar proyectos Maven y no Maven.
- Una base de datos no solo para conservar los resultados del análisis, los proyectos y la configuración global, sino también para mantener el análisis histórico de TimeMachine. actualmente se admiten 5 motores de base de datos : Oracle, MySQL, Derby (solo demo), PostgreSQL y MS SQLServer
- Una herramienta de informes web para mostrar paneles de control de calidad de código en proyectos, buscar defectos, verificar la máquina de tiempo y configurar el análisis.
Como parte de sus analizadores, Sonar core embarca las mejores herramientas para encontrar violaciones de las reglas de codificación (PMD, Checkstyle), detectar posibles errores(Findbugs) y medir la cobertura mediante pruebas unitarias (Cobertura, Clover). Pero lo que hace que Sonar sea verdaderamente único es Squid, su propio analizador de código que no solo analiza el código fuente, sino también el código de bytes y mezcla los resultados.
Dado que el análisis se ejecuta a través de un complemento Maven, Sonar se puede lanzar fácilmente en entornos de «Integración continua».
Caso de uso en el proyecto Apache commons-collection
Un requisito previo para ejecutar Sonar es tener Java y Maven instalados en la caja. Una vez que este sea el caso, puede ejecutar Sonar en 5 sencillos pasos:
1. Descargue la distribución desde https://www.sonarqube.org/ descargas / y descomprímala
2. Abra una consola e inicie el servidor:
> $SONAR_HOME\bin \ windows-x86-32\StartSonar.murciélago en ventanas
> $SONAR_HOME/bin//sonar.sh en otras plataformas
3. Abra una consola en la que desee obtener el código fuente y ejecute:
svn co http://svn.apache.org/viewvc/commons/proper/collections/trunk/.
4. Ejecute mvn install sonar: sonar en el mismo directorio
5. Navegar http://localhost:9000
La página de inicio de la aplicación muestra la lista de proyectos bajo control de calidad con algunas métricas configurables.
Para ampliar, simplemente puede hacer clic en el proyecto y obtener su panel de control
Desde allí tienes acceso a una serie de herramientas de caza entre las que se encuentran:
El hotspot para conocer los archivos que tienen «la mayoría» o «la menor» …
Pero también se puede hacer clic en cualquier métrica del panel para saltar a la escena y obtener una vista de la métrica por componente subyacente
Cada herramienta de caza eventualmente lleva al cazador al código fuente donde se resaltan las presas
El Ecosistema Sonar
Hay un ecosistema muy dinámico alrededor de Sonar
- Una comunidad activa formada por más de 300 personas en la lista de correo de usuarios y más de 150 personas en la lista de correo de desarrollo
- 35 + complementos en la forja (http://docs.codehaus.org/display/SONAR/Sonar+Plugin+Library/) que se dividen en cuatro categorías
- Integración con herramientas externas como Jira, Hudson, Bamboo, GateIn, AnthillPro, Crowd
- Extensión directa de la funcionalidad principal agregando un nuevo comportamiento, calcule métricas avanzadas o consolide proyectos, agregue nuevas métricas
- Agregue cobertura de idiomas como PL/SQL, ActionScript3
- Integración con IDEs para obtener información de defectos en el código cuando se edita
- más de 3.000 descargas al mes
- Un equipo de desarrollo central dirigido por SonarSource (http://www.sonarsource.com)
Conclusión
Tras la adopción masiva de los motores de integración continua y las prácticas de desarrollo impulsadas por pruebas, la gestión de la calidad de la fuente parece el siguiente paso natural para los equipos de desarrollo en su esfuerzo de industrialización. El sonar permite alcanzar este objetivo con pocos esfuerzos y con diversión.
En 2010, la plataforma Sonar continuará evolucionando, los principales ejes de desarrollo serán cubrir nuevos lenguajes y mejorar la integración con IDE.