5 formas automatizadas de garantizar la calidad del código

🇺🇸 English version here 🇺🇸.

Asegurar la calidad del código es esencial, y como QAE o SDET, debes proporcionar herramientas automatizadas a tu equipo para garantizarla. Aunque muchos consideran que esto es un problema estético o de estilo, puede afectar la productividad y conducir a decisiones equivocadas. Esta cuestión es tan importante que numerosos referentes en programación no pierden oportunidad para resaltarlo:

“La proporción de tiempo dedicado a leer y escribir es de más de 10 a 1. Constantemente leemos código antiguo como parte del esfuerzo por escribir código nuevo. Hacer que sea fácil de leer hace que sea más fácil de escribir”.

Robert C. Martin (El tío Bob).

“Cualquier tonto puede escribir código que una computadora pueda entender. Los buenos programadores escriben código que los humanos pueden entender”.

Martin Fowler.

Este artículo le presenta estos conceptos; en artículos futuros, te mostraré cómo implementarlos técnicamente.

1. Gestión de dependencias

Tu proyecto debe utilizar un software de gestión de dependencias actualizado que automatice todo lo necesario para que el proyecto funcione sin intervenciones manuales.

2. Guías de estilo de código

Cada desarrollador tiene su estilo particular de codificación, por lo que es esencial comprometerse con guías de estilo para estandarizar el código. Implementa herramientas que formateen el código mientras lo escribes, como plugins para el IDE, y configúralas para aplicarse automáticamente durante los procesos de pre-commit y pre-push.

Para proyectos legados o proyectos con bases de código extensas, lo mejor es aplicar el análisis de estilo solo al código cambiado recientemente según el sistema de control de versiones (CVS o git). Añade sistemas de linting para lenguajes auxiliares del proyecto como CSS, SQL, XML, JSON, etc.

3. Análisis de código estático – SonarQube

El plugin SonarLint, disponible para casi todos los IDEs, te ayudará a estandarizar el código y prevenir code smells y errores de lógica (no errores de reglas de negocio) mientras lo escribes. Mientras tanto, SonarQube ofrece un análisis más profundo para mejorar la legibilidad, mantenibilidad, seguridad, duplicación de código y cobertura de pruebas, proporcionando soluciones.  

SonarQube no es una herramienta de análisis de seguridad, pero ayuda a reducir la probabilidad de exposición.

4. Prevenir la promoción de código no estandarizado

GitHub actions

Como QAE o SDET, debes implementar la gestión de caché para obtener resultados rápidos. Recuerda, la mejor prueba es la que entrega resultados más rápido. Configura para que la fusión del código se habilite solo después de pasar el linter y las pruebas unitarias.

Revisión por pares

El desarrollador debe incluir una captura de pantalla del Quality Gate de SonarQube en cada PR. Esto ayuda a que los revisores se concentren en proporcionar mejoras reales, no en problemas que las herramientas podrían haber señalado. La revisión debe realizarse por al menos dos personas, incluido el líder técnico. Si el código carece de pruebas unitarias, el segundo revisor debe ser el ‘padrino’ del módulo afectado. Configura para que la fusión se bloquee hasta obtener las aprobaciones requeridas.

5. Jenkins y otros sistemas de integración continua

Como QAE o SDET, es crucial implementar la gestión de caché para optimizar el proceso de integración continua. Asegúrate de que las reglas se apliquen tanto en el CVS como en el sistema de integración continua para evitar su omisión. Aunque pueda parecer repetitivo, el sistema de integración continua ejecutará menos pruebas que el CVS. Por último, habilita la generación de informes del sistema de integración continua para monitorear eficazmente el control de calidad.

Oportunidad para desarrollar habilidades en los equipos de ingeniería

Sugerencias para usar otros estándares

Evalúa las opciones propuestas en equipo, considerando las características de los estándares, como el tamaño de la comunidad y la frecuencia de sus mejoras.

Implementación de reglas específicas

Esta es una oportunidad para que el equipo crezca. El miembro del equipo que sugiera el cambio debe promoverlo dentro del estándar, desarrollando habilidades sociales y técnicas que beneficiarán tanto al equipo como a su futuro.

ANEXO: Tabla de tecnologías recomendadas

La siguiente tabla presenta una lista de tecnologías que te permitirá ampliar tu conocimiento mientras publico los próximos artículos detallando cada paso de la implementación.

TipoLenguajeSolución
Gestión de DependenciasJavaMaven o Gradle
 JavaScriptNpm o Yarn
 PythonPoetry
Estilo / LinterTodosAplicar básicos en el editorconfig. La mayoría de los IDEs pueden leer este archivo de forma natural
 JavaEstilo Guava aplicado con diffplug.spotless
 JavaScriptEstilo Airbnb aplicado con Eslint junto con Prettier
 PythonPyLint + Black
Plugins para el IDEJavaSonarLint
 JavaScriptEslint, SonarLint
 PythonPyLint, SonarLint
Pre-CommitJavaGitbuildhook
 JavaScriptHusky
 Pythonpre-commit

Fuente

Fuente propia.

Author: Alex Andrade

Magister Ingeniería de Software, MBA y Especialista en Gerencia de Proyectos Tel: +57-317-241-5118

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.