Hace dos días vimos una pequeña introducción sobre las herramientas de análisis estático de código.
Hoy vamos a ver un poco lo que ofrece Visual Studio 2010 y .NET 4 junto a la herramienta Static Checker creada por el equipo de Contratos de código.
Esta herramienta va analizando nuestro código a medida lo escribimos y nos va mostrando aquellos contratos que no se cumplen. Si tenéis Visual Studio 2010 Premium o Últimate o Team System 2008. Podéis descargarla desde http://bit.ly/fF3wzl.
Tendremos que activarla en cada proyecto en el que queramos usarlo explícitamente:

Un ejemplo de código en el que esta herramienta nos avisará en tiempo de compilación sera por ejemplo:
var numbers= new int[2];
numbers[3]=0;
Sin embargo, donde más útil pude ser es con los contratos de código éxplícitos, con sus precondiciones y postcondiciones.
Veamos un pequeño ejemplo, supongamos que tenemos este código en alguno de nuestros métodos:
var idFactura= ObtenerUltimoId();
ProcesaFactura(idFactura);
Así, a simple vista, ninguna herramienta de análisis estático podría hacer nada con este código, a no ser que tuviese algún tipo de información extra. Y aquí es donde entran los contratos. Si usamos contratos y el código de la función ObtenerUltimoId() es así:
public int ObtenerUltimoId()
{
Contract.Ensures(Contract.Result<int>()>0);
….
return n;
}
De esta forma se indica que el método tiene que devolver un valor mayor que cero. Y es una información que el Checker usará para comprobar el código. Y ahora si el método ProcesaFactura() es tal que así:
public void ProcesaFactura(int idFactura)
{
Contract.Requires<ArgumentException>(idFactura>0);
…..
}
Hasta aquí todo bien, sin embargo la herramienta comprueba que un método tiene una condición de Requires y recibe datos de otro método que no dice nada sobre lo que va a devolver:

Queda claro que esta tool es más útil cuantos más contratos usemos.
Espero que os sirva.
Juan María Laó Ramos.
Muy buena herramienta, la probaré sin duda 🙂
LikeLike
Apuntada la herramienta 😀 Thanks
LikeLike