2010-02-14 15 views
6

ho il seguente codice:Come Code Contracts per lavorare in Visual Studio 2010

class Program 
{ 
    static void Main(string[] args) 
    { 
     Console.WriteLine(SqrtRoot(0)); 
     Console.WriteLine(SqrtRoot(10)); 
     Console.WriteLine(SqrtRoot(-10)); 
     Console.ReadKey(); 
    } 

    public static int SqrtRoot(int i) 
    { 
     Contract.Requires(i >= 0); 
     return (int)Math.Sqrt(i); 
    } 
} 

Sono in esecuzione in modalità di debug, e dovrebbe sparare qualche tipo di errore nell'ultima riga

Console.WriteLine(SqrtRoot(-10)); 

anche se, per qualche ragione, non lo è. Sembra ignorare la chiamata di Contract.Requires(). Devo impostare qualcosa quando provo a usare i Contratti di codice?

Utilizzo Visual Studio 2010 RC.

Grazie

risposta

2

Non ho quella scheda sia ma ho trovato una soluzione:

Contract.Requires<ArgumentOutOfRangeException>(i >= 0); 

Probabilmente il pacchetto di contratti di codice deve essere installato, ma il link per il download non funziona. http://msdn.microsoft.com/en-us/devlabs/dd491992.aspx

+0

Questo genera un errore se per i valori di i = 0, i = 10 e i = -10. Non capisco –

+0

L'ho appena provato con Contract.Requires (i> = 0); e ora la vita non è oscurata. Forse devi dare il tipo di eccezione come suggerisce Victor. –

+0

Hm ... Hai ragione. Qualcosa non sta andando bene lì ... Anche se il comportamento predefinito dei contratti è quello di lanciare un errore e visualizzare una finestra. –

0

Credo che bisogna attivare il controllo nelle impostazioni del progetto del contratto di esecuzione (ci dovrebbe essere un riquadro "I contratti Codice" ...)

Vedere la (paragrafo 6) user documentation per ulteriori informazioni .

+2

Ci avevo pensato, ma non riesco a trovarlo da nessuna parte nelle opzioni del progetto. –

5

È necessario installare l'integrazione di Visual Studio. Mentre la libreria CodeContracts stessa fa parte di .NET 4, il codice deve essere riscritto dal redattore dei Contratti di codice (ccrewrite) per utilizzare correttamente la libreria.

Scarica il programma di installazione da DevLabs site.