Da wollte ich noch über die Pex Demo aus dem VSTS Infos Day bloggen uns siehe da….
Dariusz hat schon alles veraten :-) Daher möchte ich nur noch einen wichtigen Aspekt ergänzen. Pex liefert nicht nur einen hohe Code Coverage, sondern kann auch schnell mal den ein oder anderen Bug identifzieren. In dem Beispiel wird folgende Methode untetrsucht;
public bool Validate( CardType cardType, string creditCardNumber )
Was ist wäre das Disaster Nr1? Wenn wir eine Kombination von nicht validen Input Variablen finden würden und die Funktion true zurückliefert, richtig?
Wenn man sich unter diesem Aspekt die Pex Exploration anschaut und das Ergebnis nach dem Result sortiert, wird einem wieder bewust wie schlecht dieser Code ist :-)
Mann findet sofort 4 Varianten, bei denen die Methode trotz nicht validem Input True liefert! Dem liegt zwar nur ein Bug zugrunde, nämlich dass jeder ENUM ein definierten Wert für 0 haben muss.
So passiert’s halt :-)
public enum CardType
{
MasterCard = 1,
BankCard = 2,
Visa = 3,
AMEX = 4,
Discover = 5,
DinersClub = 6,
JCB = 7,
}
Wer über dieses Project mal die Statische Code Analyse hat laufen lassen, hätte schon ein Hinweis bekommen:
Warning 3 CA1008 : Microsoft.Design : Add a member to 'CardType' that has a value of zero with a suggested name of 'None'.
, aber wer intressiert sich schon für die Statische Codeanlyse… doch erst wenn es mal richtig weh tut. Also einfachmal auf bestehende Projekte anwenden und schauen was so passiert :-)
Viel Spass
Chris