Observabilidad en DevOps: Guía práctica para implementarla

La calidad del código es un aspecto vital para cualquier equipo de desarrollo. Sin embargo, realizar revisiones de código manuales de forma constante puede ser ineficiente y propenso a errores humanos o peor aún no revisarlo y solo conformarse con que funcione permite que se trabaje con malas prácticas dentro de la organización. Aquí es donde GitHub Actions ofrece una solución para automatizar gran parte del proceso de revisión, ayudando a mantener altos estándares de calidad sin sacrificar eficiencia.

En esta guía práctica aprenderás paso a paso cómo aprovechar GitHub Actions para implementar revisiones automáticas y efectivas del código en cada pull request (PR) y cómo configurar flujos automatizados integrando herramientas populares de análisis estático y pruebas unitarias en tu proyecto Java utilizando GitHub Actions. 

Aprenderás cómo integrar herramientas que analizan estilo de código, detectan errores comunes, identifican posibles bugs y miden la cobertura de pruebas, creando además una checklist automatizada que asegure que cada PR cumpla con los estándares establecidos por tu equipo.

🤖¿Por qué automatizar la revisión del código Java?

La automatización de procesos de revisión del código ofrece múltiples ventajas:

✅Consistencia: Evita errores humanos y garantiza que cada revisión siga los mismos estándares.

✅Rapidez: Permite detectar errores comunes rápidamente antes de hacer merge a la rama principal.

✅Eficiencia: Libera a los desarrolladores de tareas repetitivas para centrarse en cuestiones más complejas.

✅Mejores prácticas: Acostumbra a los desarrolladores a implementar buenas prácticas en su código en cada PR.

💻Requisitos previos antes de comenzar

Para seguir esta guía necesitarás:

  • Un repositorio Java alojado en GitHub.
  • Java JDK 8 o superior configurado en tu proyecto.
  • Familiaridad básica con YAML, Maven o Gradle.
  • Acceso para crear workflows en GitHub Actions.

⚙️Configurando GitHub Actions

Los workflows de GitHub Actions se definen en archivos YAML almacenados en la carpeta .github/workflows. A continuación, la guía con los pasos necesarios para configurar tu primer workflow.

Paso 1️⃣: Crear el archivo workflow YAML

Crea el archivo .github/workflows/ci-java.yml y define la estructura básica:

Este archivo configura un flujo básico que se activa en cada PR dirigido a la rama main, pero también se puede cambiar a otras ramas según el caso.

Paso 2️⃣: Integrar análisis estático con Checkstyle

Checkstyle es una herramienta que permite analizar el código fuente de tus archivos de Java para que cumpla con ciertas reglas de estilo y convenciones definidas por el equipo. 

No detecta errores funcionales como un compilador, sino aspectos como:

✅ Si los nombres de clases, métodos o variables siguen una convención (como camelCase, PascalCase, etc.)
✅ Si los bloques de código están correctamente indentados
✅ Si hay líneas demasiado largas
✅ Si hay espacios o saltos de línea innecesarios
✅ Si falta documentación en clases o métodos (Javadoc)
✅ Entre otros detalles de clean code

Para integrarlo:

Primero, en tu proyecto Maven o Gradle, agrega la dependencia Checkstyle.

Para Maven:

Define las reglas en un archivo XML de configuración, por ejemplo checkstyle.xml, en este puedes agregar las reglas, por ejemplo, para la máxima longitud de caracteres de una línea:

Luego, añade este paso en tu workflow YAML:

Paso 3️⃣: Integrar PMD para detección avanzada de código defectuoso

PMD es otra herramienta potente de análisis estático para detectar problemas potenciales como:

 🔍 Errores de lógica comunes
❌ Malas prácticas de programación
📉 Código duplicado o innecesario
🚫 Uso de variables sin utilizar
🧠 Complejidad excesiva en métodos o clases

Para configurarla agrega la dependencia PMD en Maven:

Define las reglas en un archivo XML de configuración, por ejemplo quickstart.xml, en éste puedes agregar las reglas:

Luego, agrega al workflow:

Paso 4️⃣: Detecta errores y vulnerabilidades con SpotBugs 🐞

SpotBugs es una herramienta efectiva para detectar bugs potenciales, errores de lógica y vulnerabilidades de seguridad antes de que el código se ejecute. SpotBugs no analiza el código fuente directamente, sino que analiza los .class compilados.

Esto le permite hacer análisis más profundo, incluyendo flujos de ejecución y patrones de bytecode.

Para configurarla agrega el plugin en el pom.xml:

Luego, incluye este paso en tu workflow:

Paso 5️⃣: Integrar cobertura de código con JaCoCo

JaCoCo mide la cobertura de pruebas unitarias.

Agrégalo en el pom.xml definiendo el porcentaje mínimo de coverage de las pruebas:

Luego, ejecuta las pruebas unitarias con cobertura desde tu workflow:

Paso 6️⃣: Crear una checklist automatizada

Ahora que ya están los pasos anteriores, se puede crear una checklist automatizada en GitHub Actions utilizando la función de status checks. GitHub automáticamente mostrará los resultados de estos pasos en la interfaz de PR, indicando si pasa o falla cada revisión automatizada.

El workflow completo debería verse así:

🔍Cómo interpretar y resolver los resultados📊

Al abrir una PR, GitHub Actions ejecutará automáticamente estos pasos. Si alguno falla, se podrá acceder al log directamente desde GitHub y corregir las incidencias reportadas antes de fusionar la PR. Esto asegura que solo código de alta calidad llegue a las ramas principales.

📘Buenas prácticas y recomendaciones adicionales

  • Mantén actualizado tu workflow y dependencias.
  • Personaliza las reglas de Checkstyle y PMD según tus necesidades.
  • Promueve en tu equipo la atención temprana a resultados automatizados para reducir deuda técnica.

Conclusión

Automatizar la calidad del código Java mediante GitHub Actions es una estrategia efectiva para mantener la consistencia y calidad del código fuente. Al adoptar estas herramientas y prácticas se pueden detectar rápidamente problemas comunes, reducir significativamente esfuerzos manuales y mejorar notablemente la eficiencia del equipo.

Comienza hoy mismo a implementar estos procesos automatizados robustos y lleva la productividad y fiabilidad de tu proyecto Java a otro nivel.

¡Es hora de automatizar y optimizar tu revisión de código Java!

¿Quieres que tu equipo DevOps deje de apagar incendios y comience a prevenirlos?👉 Contáctanos y te ayudaremos a construir una estrategia de observabilidad efectiva adaptada a tu sistema.

Lau Sanabria

July 2, 2025