2014-12-11 17 views
5

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.

Odpowiedz

Powiązane problemy