Así comienza el código limpio

Sofka Blog
Por German Tenelanda Valencia
Comparte

A menudo los integrantes de un equipo de desarrollo se preocupan por los diferentes estilos de codificación. Sin embargo, si bien pueden haber lineamientos sobre las mejores prácticas, muchos equipos se componen por integrantes que trabajan en diferentes tiempos y tipos de experiencia llevando a no tener código limpio en diferentes ocasiones.

Una solución conocida para este tipo de problema es el uso de herramientas que  permitan analizar el código de los repositorios y detectar a tiempo diferentes factores que puedan afectar a corto, mediano o largo plazo. En este artículo se contextualizan algunas de estas herramientas, pero estará centrado en una puntualmente que ayuda a escribir código limpio desde el principio.

La compañía Sonarsource tiene diferentes productos que nos ayudan en el camino a tener código limpio siempre, estos son: SonarCloud, SonarQube y SonarLint. En lo referente a SonarCloud y SonarQube se puede decir que son herramientas semejantes, un fragmento de un artículo en su blog menciona lo siguiente:

“La base: Análisis de código estático para 30+ lenguajes.

Ambos productos cubren esencialmente los mismos lenguajes(SonarCloud no soporta PL/I, RPG o VB6). Ambos comparten el mismo motor de análisis estático subyacente para detectar errores, vulnerabilidades y code smells y generar valiosas métricas de calidad de código.”

¿SonarQube vs SonarCloud?

 El motor de análisis estático al que se hace referencia recorre todo nuestro repositorio o partes de él para medir confiabilidad, seguridad y mantenibilidad, y luego presenta valiosas métricas en una interfaz amigable. Dicha interfaz puede ser SonarQube o SonarCloud. Y mientras SonarQube se hospeda en servidores locales o nube autogestionada, SonarCloud está hospedado y administrado por SonarSource en AWS. La versión gratuita de este último solo analiza repositorios públicos, ¿entonces cuál de los dos usar? Les comparto un fragmento:

 “En resumen, si su equipo está completamente basado en la nube, no desea problemas de mantenimiento y desea el acceso más rápido a las nuevas funciones, entonces SonarCloud es una excelente opción. Si está de acuerdo con el auto alojamiento y el mantenimiento o ve valor en las capacidades de administración, entonces SonarQube tendría sentido para usted.”

He notado el uso de estas herramientas en varios equipos y en especial SonarCloud, analizando el código al final del desarrollo de una funcionalidad aprovechando la integración con devops usando pipelines de CI, ahora, esto lleva a que solo hasta ese momento el desarrollador pueda notar si tiene algo en su código que no conviene agregar a las ramas principales, lo que indica un reproceso en desarrollo y posiblemente pruebas. Esto afecta en ocasiones la moral y la confianza del equipo dado que no permite visualizar los cambios teóricamente ya listos en alguno de los ambientes.

En este punto se puede pensar con detenimiento en la frase de Sonarsource: “El código limpio comienza en el IDE” y para esto se contextualiza la otra herramienta: SonarLint.

Según la definición de Sonarsource:

 “SonarLint es una extensión IDE gratuita y de código abierto que identifica y le ayuda a solucionar problemas de calidad y seguridad a medida que codifica. Al igual que un corrector ortográfico, SonarLint garabatea o resalta los defectos y proporciona comentarios en tiempo real y una guía de corrección clara para entregar código limpio desde el principio.

Esta herramienta está disponible para varios IDE muy usados como: VS Code, Visual Studio, Eclipse, PyCharm, Android Studio, entre otros. Reforzando la idea, esto nos permite conocer en tiempo real si algo de nuestro código no conviene.

Todas las herramientas en conjunto permiten al desarrollador lograr escribir código limpio, mejorar la calidad de su código y mejorar sus habilidades de programación, pero SonarLint además de resaltar el fragmento de código, proporciona información de por qué ese fragmento no conviene y como se puede refactorizar para que se ajuste a altos estándares de calidad. Esta es una manera de ayudar al desarrollador a ser consciente de rezagos en sus habilidades o en su conocimiento de estándares, y al tener que corregir o ajustar, lo invita a la mejora continua de sus habilidades. Por otro lado, la información que entrega Sonar respecto a cada regla que evalúa se presenta de manera diferente en cada IDE, pero es muy clara, asertiva y razonable.

Usando SonarLint

Pondré un ejemplo del uso de Sonarlint en VS Code, primero se descarga e instala como una extensión

Previamente debemos haber configurado un proyecto en SonarQube o SonarCloud y tener presente dos conceptos el “Project Key” y “Organization Key”, pero además contar con un token de usuario de Sonar. Esto es necesario en cualquiera de los IDE para los que hay soporte y Sonar cuenta con excelente documentación para el resto de IDE, sin embargo la idea es la misma.

Debemos configurar el modo conectado en la extensión de Sonarlint

Server URL

Agregamos la url del servidor para el caso de Sonarcloud: https://sonarcloud.io/ , pero si usaramos el servidor local colocamos algo como: http://localhost:8080/ o la url de cualquier otro servidor autogestionado según corresponda.

User Token

Token de usuario generado desde la interfaz de SonarQube o SonarCloud en el apartado de “My account” del menú que se desprende de la parte superior derecha donde cerramos sesión  y luego en la pestaña “Security”, también en el caso de VS Code está la opción de usar el botón “Generate Token”.

En la configuración se nos pedirá el “Organization key” que es básicamente la forma en que identificamos a la organización a la que nos deseamos conectar

Y una vez conectados podemos seleccionar el proyecto con el “Project Key” o el nombre con el que lo identificamos.

Todo esto nos servirá para poder acceder a las reglas y condiciones específicas de nuestro proyecto o lo que se conoce como: “Quality gate” y “Quality profile”, pero si no configuramos ninguna organización ni proyecto Sonar usará el perfil por defecto llamado “Sonar way”.

¡Todo listo! Ahora podemos comenzar a visualizar en nuestro IDE las reglas y condiciones que nos permitirán tener código de alta calidad

Flujo sugerido por Sonarsource

Imagen tomada de SonarQube Documentation

En esta región reza un dicho: “Es mejor la seguridad que la policía” y queda muy bien con la descripción de este flujo, pero por último compartiré algo desde lo personal.

En ocasiones para asegurarme que el código cumpliera con las condiciones y reglas de la organización, no solo conectaba el IDE a las reglas de SonarCloud, sino que también configuraba un servidor local con SonarQube que tuviera las mismas condiciones y reglas que el de SonarCloud, y ejecutaba previamente un escaneo local antes de enviar el código a las ramas principales. De esta manera podía tener presente más estándares que me ayudaron a tener una mejora continua en mis habilidades, reduciendo cada vez más los fallos en los pipelines de CI generando confianza en todo el equipo.

En conclusión, sí podemos generar mayor seguridad en que nuestro código puede ser limpio desde que estamos tecleando y en ese sentido, la calidad de nuestro desarrollo aumenta. Además, tendremos más tiempo para ser creativos y aumentar nuestro potencial, sin preocuparnos de más en los reprocesos, con la sensación de estar entregando siempre calidad en nuestro trabajo y contribuyendo a tener equipos de alto rendimiento.

El código fuente es el activo más valioso de nuestro software y hoy día todos los sistemas necesitan contar con un alto nivel de variabilidad y confianza. Por eso es muy relevante hoy contar con herramientas y prácticas que permitan lograr un código limpio. Entre las ventajas podemos mencionar: reducción de costos y tiempo, un ambiente laboral agradable ya que fomenta cultura y un software de alto rendimiento por mucho tiempo, puesto que se facilita la mantenibilidad.

Referencias: ¿SonarCloud o SonarQube? – Orientación sobre cómo elegir uno para su equipo | Sonar (sonarsource.com)

Últimos artículos