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 |