ImpactGate es una herramienta de línea de comandos diseñada para medir y controlar el deterioro estructural que introducen los cambios en el código. Su objetivo principal es prevenir la acumulación de complejidad en estructuras existentes, un fenómeno conocido como 'decaimiento estructural', donde métodos o clases se vuelven excesivamente pesados al añadir nuevas funcionalidades sin refactorización.
El sistema funciona mediante una métrica de impacto que calcula el coste de un cambio basándose en la complejidad preexistente del código modificado. A diferencia de métricas simples que solo cuentan líneas de código, ImpactGate penaliza la adición de código a estructuras ya complejas, mientras que la importación de archivos nuevos es considerada de bajo coste. Esta fórmula permite identificar qué cambios son más riesgosos para la mantenibilidad del proyecto.
La herramienta puede integrarse en flujos de trabajo de desarrollo de varias formas: como un comando independiente, como un hook pre-commit en Git, o como una acción en CI/CD para GitHub, GitLab y Jenkins. Los usuarios pueden configurar umbrales de alerta y bloqueo, o utilizar un sistema de curvas de percentiles para adaptar las reglas a la distribución histórica de cambios de su propio proyecto. Esto permite a los equipos establecer límites de impacto que se ajustan a la complejidad real de su base de código, evitando bloqueos innecesarios mientras se protegen las estructuras críticas del software.
