Articles of code contracts

CodeContracts: A condição booleana é avaliada como um valor constante, por quê?

Estou recebendo este aviso, mas não consigo descobrir o problema … CodeContracts: warning: A condição booleana d1.Count! = D2.Count sempre é avaliada como um valor constante. Se ele (ou sua negação) aparecer no código-fonte, você pode ter algum código morto ou uma verificação redundante O código é o seguinte: public static bool DictionaryEquals(IDictionary d1, IDictionary […]

Posso deixar contratos em código que estou fundindo com uma base de código usada por desenvolvedores de contratos sem código?

Nos últimos meses, venho desenvolvendo um projeto paralelo para minha empresa, mas os superiores agora decidiram que seria um bom ajuste em um produto existente. Eu tenho desenvolvido o projeto paralelo usando o Code Contracts da Microsoft para verificação de tipo estático (em parte porque eu não os tinha usado antes e estava ansioso para […]

Código Contrato: ccrewrite saiu com o código -1?

Eu sou novo no código de contratos. Eu baixei a última versão do projeto de contrato de código (1.4.40314.1) e comecei a implementá-lo no meu projeto. Quando eu habilitei ‘Runtume Checking’ através da aba Code Contracts no VS2010, recebi este erro Error 1 The command “”C:\Program Files (x86)\Microsoft\Contracts\Bin\ccrewrite” “@Application1ccrewrite.rsp”” exited with code -1. toda vez […]

Como o Contract.Ensures funciona?

Estou começando a usar o Code Contracts, e embora o Contract.Requires seja bastante simples, estou tendo problemas para ver o que o Ensures realmente faz. Eu tentei criar um método simples como este: static void Main() { DoSomething(); } private static void DoSomething() { Contract.Ensures(false, “wrong”); Console.WriteLine(“Something”); } Eu nunca vejo a mensagem “errada”, nem […]

Construindo com contratos de código?

Eu tenho o seguinte método: private void DoSomething(CoolClass coolClass) { if (coolClass == null) { throw new ArgumentNullException(“coolClass”); } coolClass.Name = “Pepe”; } Com o Code Contracts podemos escrever assim: private void DoSomething(CoolClass coolClass) { Contract.Requires(coolClass != null, “IS NULLL!”); coolClass.Name = “Pepe”; } O segundo método é mais curto e mais simples. O problema […]

Contratos de Código Net – Onde aprender mais?

Eu tinha ouvido alguma discussão no meu escritório recentemente sobre o .Net “Contratos”, no entanto, quando eu perguntei a alguns dos meus colegas, nenhum deles poderia facilmente explicar-me para o que eles eram, ou o que eles eram. Alguém tem algum recurso, explicações e talvez um tutorial sobre seu uso? Obrigado, Paulo

C #: contratos de código vs. validação de parâmetro normal

considere os seguintes dois códigos: public static Time Parse(string value) { string regXExpres = “^([0-9]|[0-1][0-9]|2[0-3]):([0-9]|[0-5][0-9])$|^24:(0|00)$”; Contract.Requires(value != null); Contract.Requires(new Regex(regXExpres).IsMatch(value)); string[] tokens = value.Split(‘:’); int hour = Convert.ToInt32(tokens[0], CultureInfo.InvariantCulture); int minute = Convert.ToInt32(tokens[1], CultureInfo.InvariantCulture); return new Time(hour, minute); } e public static Time Parse(string value) { if (value == null) { throw new ArgumentNullException(“value”); } […]

Contratos de código: Precisamos especificar Contract.Requires (…) instruções redundantes na delegação de methods?

Estou pretendendo usar o novo recurso de contratos de código do .NET 4 para desenvolvimento futuro. Isso me fez pensar se temos que especificar declarações Contract.Requires(…) equivalentes de forma redundante em uma cadeia de methods. Eu acho que um exemplo de código vale mais que mil palavras: public bool CrushGodzilla(string weapon, int velocity) { Contract.Requires(weapon […]

Por que você não consegue capturar as exceções do Contrato de código?

System.Diagnostics.Contracts.ContractException não está acessível no meu projeto de teste. Observe que esse código é puramente eu mesmo mexendo com minha nova cópia shiny do Visual Studio, mas gostaria de saber o que estou fazendo de errado. Estou usando a edição profissional do VS, portanto não tenho verificação estática. Para continuar usando contratos de código (o […]