Eksperymentuję z kontrakcją kodu i napotkałem jeden problem. Mam klasa:Kontrakt. Wariant nie jest sprawdzany przez weryfikatora statycznego.
public class SpecialPoint
{
public int X { get; set; }
public int Y { get; set; }
public SpecialPoint(int x, int y)
{
Contract.Requires<ArgumentException>(y > x);
X = x;
Y = y;
}
[ContractInvariantMethod]
private void ClassContract()
{
Contract.Invariant(Y > X);
}
}
i uruchomić test przed nim:
[TestFixture]
class SpecialPointTests
{
[Test]
public void SpecialPoint()
{
var p = new SpecialPoint(10, 20);
p.X = 30;
}
}
Spodziewałem statycznego sprawdzania mnie ostrzec o cesji p.X = 30; ponieważ narusza to niezmienniki, ale ma miejsce tylko podczas uruchamiania. Mam włączoną analizę statyczną. Moja wersja to 1.7.11202.10.