En este momento estás viendo Análisis: ¿Qué es “static analysis” (análisis estático)?

Análisis: ¿Qué es “static analysis” (análisis estático)?

La “static testing” (prueba estática) evalúa productos de trabajo —código, requisitos, diseños, especificaciones— sin ejecutar el software. La herramienta de “static analysis” (análisis estático) identifica defectos de forma temprana, mejora la calidad intrínseca y reduce el costo de corrección en etapas posteriores.

Cómo gestionar “static analysis” en tu proceso

1) Política y alcance

  • Define qué artefactos analizarás (código, plantillas de requisitos, “pull requests”) y para qué (mantenibilidad, seguridad, estilo, duplicación, complejidad).
  • Establece umbrales de aceptación (p. ej., cero vulnerabilidades “Alta/Critical” y duplicación ≤ 3% en código nuevo).

2) Selección de herramienta

  • Elige herramientas alineadas con tu stack (lenguajes, frameworks) y con tu pipeline (CI/CD).
  • Prioriza reglas actualizadas, cobertura de lenguajes, integración con IDE/SCM y reportes accionables.

3) Integración “shift-left” en CI/CD

  • Ejecuta el análisis en cada commit/PR antes (o junto) de las pruebas dinámicas.
  • Implementa quality gates (umbrales) que bloqueen la promoción si hay hallazgos críticos.
  • Publica resultados en paneles visibles para el equipo (radiadores de información*).

Nota (*): Este concepto [radiadores de información] está muy ligado a la gestión de proyectos ágiles bajo metodología PMI-ACP (formación que también dicto aplicando IA Generativa).

4) Gestión de hallazgos y trazabilidad

  • Clasifica por severidad/impacto y asigna responsables.
  • Diferencia políticas para código nuevo (tolerancia cero) vs código heredado (mejoras progresivas).
  • Sincroniza issues con tu flujo de gestión de defectos y enlaza con historias de usuario cuando corresponda.

5) Mejora continua y métricas

  • Revisa periódicamente reglas/umbrales y mide tendencias (p. ej., vulnerabilidades, “code smells”, complejidad ciclomática, duplicación).
  • Define objetivos por iteración (OKRs o metas SMART*) y verifica su cumplimiento en retrospectivas.

Tres casos de uso para fijar el concepto

Caso 1 — SAST para APIs (prevención de vulnerabilidades)

Situación: Equipo que desarrolla un API.
Acción: Ejecutar análisis estático en cada PR con reglas de seguridad (autenticación, inyección, dependencias vulnerables).
Resultado: Si el quality gate falla por alta severidad, el merge se bloquea; la corrección ocurre antes de las pruebas dinámicas.

Caso 2 — Mantenibilidad y deuda técnica en legado

Situación: Producto con módulos de baja legibilidad y duplicación elevada.
Acción: Analizar mantenibilidad/duplicación; acordar metas (p. ej., –20% duplicación en tres sprints; reducir funciones con complejidad > N).
Resultado: Disminuye la deuda técnica y el costo del cambio; aumenta la estabilidad previa a la ejecución de pruebas.

Caso 3 — Calidad en “código nuevo” (gates estrictos)

Situación: Crecimiento rápido con equipos distribuidos.
Acción: Aplicar quality gates estrictos sobre el código nuevo (todo lo agregado/modificado).
Resultado: El pipeline impide promover cambios que no cumplan; se focaliza la mejora donde más impacta.

Integración práctica con Xray + SonarQube

Atención: Si bien este tema está fuera del alcance del examen de certificación CTFL v4.0., me pareció muy interesante traértelo aquí para que puedas «aterrizar» el concepto ya que estamos abordando un tema concerniente a la Unidad 6 – Herramientas de Prueba, y no veo mejor manera que hacer un paralelo con una de sus prácticas.


La página “Code Quality Analysis with SonarQube” (Xray) explica cómo integrar SonarQube (herramienta de “static code analysis”) con tu flujo de trabajo gestionado en Jira/Xray (en este caso se menciona la integración entre estas dos herramientas):

  • Objetivo: incorporar análisis de calidad de código y quality gates en el pipeline (CI/CD) o ejecución local, consiguiendo feedback temprano.
  • Papel de SonarQube: reglas por lenguaje, detección de vulnerabilidades/“code smells”/duplicación/estándares, y políticas de promoción (quality gates).
  • Papel de Xray: orquestación y reporting de pruebas (planificación, ejecución, evidencias, resultados).
  • Beneficio conjunto: complementariedad entre calidad intrínseca del código (estática) y resultados de pruebas dinámicas; mejora de la trazabilidad y de la gobernanza del flujo de calidad de extremo a extremo.

Nota práctica: Xray no reemplaza al análisis estático, ni SonarQube reemplaza a la gestión de pruebas. Integrados, refuerzan el enfoque “shift-left” (prevenir antes de ejecutar), estandarizan criterios de promoción y reducen defectos escapados.

Algo también para tener en cuenta:

Sonar define al Código Limpio (Clean Code) como el código que tiene los siguientes atributos: consistencia (consistency), intencionalidad (intentionality), adaptabilidad (adaptability), y responsabilidad (responsibility).

Este aspecto también lo debemos tener en cuenta a la hora de perseguir la calidad del software.

Conclusiones clave

  • “Static analysis” = detección temprana sin ejecución.
  • Gestiona con política, herramientas adecuadas y quality gates.
  • Mide y mejora continuamente (tendencias, objetivos por iteración).
  • Integra con Xray + SonarQube para una visión completa (estático + dinámico) del flujo de calidad.

Punto para reflexionar: Me pareció interesante traer el contenido del artículo de Xray (es una de las tantas herramientas que permiten gestionar este concepto) para reforzar el alcance del concepto y así comprender aún más, cómo es su aplicación durante el desarrollo de un proyecto implementando una de las prácticas de testing.

Puedes seguir también mis publicaciones en LinkedIn.

Gus Terrera

Apasionado por el agile testing y la ia.