CRAP, que significa Change Risk Anti-Patterns, es un acrónimo técnico desarrollado en 2007 por Alberto Savoia y Bob Evans para identificar patrones de código de mala calidad. Su origen surge de la necesidad de un término memorable que los desarrolladores usen para describir código complejo o difícil de mantener, evitando métricas técnicas aburridas como la complejidad ciclomática. La fórmula original, CRAP1, combina la complejidad ciclomática de un método con la cobertura de pruebas automatizadas, sugiriendo que el código con baja cobertura de pruebas suele ser más propenso a errores futuros. Este indicador ha sido portado a varios lenguajes como Java, .NET, Ruby y PHP, e integrado en herramientas de análisis de código como Cobertura y Clover. Aunque no es una métrica perfecta, CRAP ofrece una forma objetiva de evaluar la mantenibilidad y la testabilidad del software, ayudando a los equipos a detectar riesgos de cambio y mejorar la calidad del código a largo plazo.
