Есть ли в Visual Studio 2010 Premium инструменты для работы с контрактами? - PullRequest
7 голосов
/ 22 октября 2009

Согласно этой матрице функций , Visual Studio 2010 Premium (RC) включает «статический анализ кода».

Однако добавление вызовов к Contract.Requires в начале моих методов, похоже, не имеет никакого эффекта. Я не получаю исключения во время выполнения, если контракт нарушен. Я не получаю предупреждения компилятора, если контракт не может быть доказан. Я также не могу найти вкладку «Кодовые контракты» в настройках проекта.

Я что-то упускаю из виду или эта функция доступна только в Ultimate Edition?

Ответы [ 3 ]

3 голосов
/ 13 декабря 2009

Чтобы получить статический анализ в бета-версии 2, вам необходимо загрузить и установить биты Code Contracts (1.2.21023.14 или выше) из MSDN DevLabs . Затем в свойствах проекта появится вкладка «Контракты кода» ... отсюда вы можете включить статический анализ ...

Поведение, которое вы видите, связано с тем, что API Code Contracts находится в сборке mscorlib, что позволяет работать утверждениям, но не более.

Я предполагаю, что RTM в этом не будет необходимости.

3 голосов
/ 22 октября 2009

Похоже, что существует некоторая путаница относительно того, включены или нет Code Contracts в платформу, которая идет с бета-версией VS2010, или даже в самой VS2010. На форуме Code Contracts (и особенно в этом сообщении) есть несколько упоминаний об этом, но ответов пока нет.


Я не думаю, что Code Contracts подпадает под статический анализ кода. Я думаю, что статический анализ кода относится к другим инструментам анализа кода, таким как FxCop.

Я пытался использовать Contract.Requires в VS2010 beta 2 Ultimate Edition, но у меня такое же поведение, как и у вас. Если вы посмотрите в свойствах проекта на вкладке Анализ кода, вы можете включить анализ кода, но это не относится к Контрактам кода.

Согласно комментарию Мелитты (из команды библиотек базовых классов) к статье о подключении Сделать статическую проверку контракта данных доступной в Professional Edition :

... но ограничение на инструмент статического анализа означает следующий выпуск. Он сохраняет целостность истории анализа кода, поскольку для инструментов статического анализа требуется VSTS.

Это говорит о том, что у вас (будет) должна быть версия системы группы, чтобы получить версию Code Contracts во время компиляции.

1 голос
/ 04 ноября 2009

Вам нужно включить проверку выполнения контрактов кода в свойствах проекта. Если эта панель настроек не существует, вам необходимо установить загрузку Code Contracts от Microsoft (несмотря на то, что Contract.Requires существует в платформе).

В выпусках Professional доступна только проверка времени выполнения.

...