Métricas de code review
En estos días me encuentro desarrollando técnicas para la automatización y estadarización de resultados de code reviews de los distintos proyectos que estén siendo implementados. La idea es poder tener una idea cuasi-numérica de qué tan bien o qué tan mal está desarrollada una aplicación.
Si bien no está decidido y apenas he comenzado con esa idea, estoy seguro que hay muchas cuestiones que sin duda serán ponderadas ahí. Entre ellas:
- **Estandarización:** qué tan bien se respeta el estándar propuesto para trabajar (nombres, capitalización, formas en que se conocen distintas clases)
- **Arquitectura:** qué tanto se respeta la arquitectura, sea cual sea la utilizada (decidido al comienzo del proyecto)
- **Code-coverage:** cuánto código se encuentra cubierto por pruebas de unidad (code-coverage percentage)
- **Estabilidad:** cuánto código se encuentra capturando errores que puedan generar y la forma en que los tratan
- **Flexibilidad:** cuánto funcionamiento de la aplicación se encuentra parametrizado y cuánto se encuentra cableado en el código o codificado según la lógica del negocio
- **Recursos:** cuántos recursos utiliza innecesariamente o aprovecha eficientemente el sistema
- **Performance:** de qué forma se realizan ciertas acciones que podrían mejorarse desde el punto de vista de la velocidad y la respuesta al usuario
Si bien no tengo mucha idea aún de la forma de evaluarlo, se me estaba ocurriendo basarme en sistemas de scoring estandarizados, como pueden ser el [CCWAPSS](http://ccwapss.blogspot.com/) para seguridad de aplicaciones web, en donde cada criterio a ser tenido en cuenta debe cumplir una serie de requisitos y es evaluado según una serie de preguntas simples que son fáciles de responder para el evaluador.
Incluso fantaseaba con llegar a un punto tal en donde esto pudiera automatizarse. Sé que muchas de las cuestiones serán altamente imposible de programar (o al menos, altamente difíciles de llevar a código), pero cuestiones como la forma en que se respeta la arquitectura, la estandarización y el code-coverage son fácilmente codificables para cualquier sistema que con algún u otro medio pueda reconocer el código y tracear dependencias y relaciones.
En fin, es un proyecto que apenas está empezando, y no dudo que pueda tener un futuro muy útil.
_Soy un zorrinito review._