1. Skip to content

1. Gestión de Calidad

Prácticas y herramientas para mantener código limpio, seguro y mantenible a través de validaciones automatizadas.


1.1 🎯 Calidad de Software

Qué: Conjunto de características que determinan si el software cumple requisitos y es mantenible.

Por qué: Reduce bugs, facilita evolución, acelera desarrollo a largo plazo.

Quién: Todo el equipo, especialmente developers y QA.

Costo: 20% del tiempo en configurar y mantener, previene costosas correcciones posteriores.


1.2 📊 Code Coverage

Qué: Porcentaje de código ejecutado por tests.

Métrica Qué Target Herramienta
Line Coverage % líneas ejecutadas ≥80% lógica crítica JaCoCo, Coverage.py
Branch Coverage % ramas if/else ejecutadas ≥70% Istanbul
Function Coverage % funciones llamadas 100% funciones públicas Coverage tools
Mutation Coverage % mutantes detectados ≥70% Stryker, mutmut

Anti-patrón: 100% coverage sin tests significativos.


1.3 🔍 Static Analysis

Qué: Analizar código sin ejecutarlo.

Por qué: Detectar bugs, vulnerabilidades, code smells tempranamente.

Herramienta Qué Cuándo
SonarQube Plataforma calidad multi-lenguaje CI/CD, pre-merge
ESLint Linter JavaScript/TypeScript Pre-commit, IDE
Pylint Linter Python Pre-commit, CI
Checkstyle Linter Java CI, IDE
SpotBugs Bug detector Java CI
Bandit Security linter Python CI

1.4 ✨ Code Formatting

Qué: Formateo automático consistente.

Por qué: Elimina debates de estilo, diffs limpios, legibilidad.

Lenguaje Herramienta Config
JavaScript/TS Prettier .prettierrc
Python Black, Ruff pyproject.toml
Java google-java-format Maven/Gradle plugin
Go gofmt (built-in) -
Rust rustfmt (built-in) -

Setup: Pre-commit hooks con Husky o pre-commit.


1.5 🔐 Security Scanning

Tipo Qué Herramienta
SAST Static Application Security Testing SonarQube, Checkmarx
Dependency Scan Vulnerabilidades en librerías Snyk, Dependabot
Secret Detection Credenciales en código GitGuardian, TruffleHog
Container Scan Vulnerabilidades en imágenes Trivy, Clair

1.6 👥 Code Review

Qué: Revisión de código por pares antes de merge.

Por qué: Detecta bugs, mejora diseño, comparte conocimiento.

1.6.1 Checklist

  • [ ] Código cumple requisitos
  • [ ] Tests incluidos y pasando
  • [ ] Sin código comentado
  • [ ] Sin console.log / print debug
  • [ ] Nombres descriptivos
  • [ ] Sin magic numbers
  • [ ] Documentación actualizada
  • [ ] Sin vulnerabilidades obvias
  • [ ] Performance aceptable
  • [ ] Cambios tienen sentido

1.6.2 Best Practices

Práctica Por qué
PRs pequeños < 400 líneas, fácil revisar
Descripción clara Qué, por qué, cómo testear
Automatizar lo automatizable Linters, tests, no manual
Ser constructivo Sugerir mejoras, no criticar
Responder rápido < 24 horas

1.7 🔄 CI Validation

Qué: Validaciones automáticas en CI/CD.

1.7.1 Pipeline Típico

1. Checkout code
2. Install dependencies
3. Lint (ESLint, Pylint)
4. Format check (Prettier, Black)
5. Unit tests
6. Integration tests
7. Code coverage (fail if <80%)
8. Security scan
9. Build
10. Deploy (staging)

Herramientas: GitHub Actions, GitLab CI, CircleCI


1.8 📏 Complexity Metrics

Métrica Qué Target Herramienta
Cyclomatic Complexity Número de caminos independientes < 10 por función SonarQube, ESLint
Cognitive Complexity Dificultad para entender < 15 SonarQube
LOC Lines of Code < 200 por función como umbral máximo Linters
Nesting Depth Niveles de indentación < 4 Linters

1.9 🎨 Design Quality

Aspecto Qué Cómo medir
Cohesión Qué tan relacionados están elementos Alta cohesión = bueno
Acoplamiento Dependencias entre módulos Bajo acoplamiento = bueno
Code Smells Indicadores de mal diseño SonarQube, manual
Technical Debt Costo de soluciones subóptimas SonarQube Debt Ratio

1.10 📊 Métricas de Calidad

Métrica Fórmula Target
Defect Density Bugs / KLOC < 1
Test Success Rate Tests passing / Total tests 100%
Code Coverage Lines covered / Total lines ≥80%
Technical Debt Ratio Remediation cost / Development cost < 5%

1.11 🚫 Anti-patrones

Anti-patrón Problema Solución
Ignorar warnings Acumulación de problemas Tratar warnings como errores
Tests sin asserts Falsa sensación de seguridad Validar comportamiento real
Coverage por coverage Tests inútiles Tests significativos
Skip CI checks Merges sin validar CI obligatorio
Code review superficial LGTM sin leer Checklist, tiempo dedicado

1.12 📚 Recursos