Code Contracts пытается получить ошибки сборки вместо предупреждений - PullRequest
7 голосов
/ 20 декабря 2010

Я пытаюсь получить VS2010 Ultimate с контрактами кода для генерации ошибок вместо предупреждений.

У меня есть эта простая тестовая программа:

using System.Diagnostics.Contracts;

namespace MyError
{
  public class Program 
  {
     static void Main(string[] args)
     {
         Program prog = new Program();
         prog.Log(null);
     }

     public void Log(string msg)
     {
         Contract.Requires(msg != null);
     }
  }
}

Правильно определяет наличие нарушения договора:

C:\...\Program.cs(10,13): warning : CodeContracts: requires is false: msg != null

В моем файле csproj есть поле свойства для Debug:

TreatWarningsAsErrors> true

Что-то еще, что я должен установить в настройках проекта, чтобы превратить их в ошибки?

Ответы [ 2 ]

2 голосов
/ 02 июня 2011

Похоже, на данный момент Microsoft решила не делать это возможным, но они рассматривают это на будущее: http://connect.microsoft.com/VisualStudio/feedback/details/646880/code-contracts-dont-listen-to-treat-warnings-as-errors-setting

1 голос
/ 25 июня 2011

Проблема заключается в том, что кодовые контракты используют переписывающее устройство.они отображаются как предупреждения, потому что они рассчитываются только после завершения сборки.

Ну, я действительно не знаю, как это работает, но если вы не встроили контракты кода в компилятор, я не вижу, как они могут быть чем-то, кромепредупреждения / сообщения.

...