Включает ли Visual Studio 2010 Premium инструменты контракта?

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

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

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


person Wim Coenen    schedule 22.10.2009    source источник


Ответы (3)


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


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

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

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

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

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

person adrianbanks    schedule 22.10.2009
comment
Есть ли в vs2010 даже командная версия? Матрица характеристик этого не показывает. - person Wim Coenen; 23.10.2009
comment
Я думаю, что версии Team System превращаются в Ultimate-версию 2010 года (microsoft.com/visualstudio/en-gb/products/msdn/) - person adrianbanks; 23.10.2009

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

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

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

person Paul Killick    schedule 13.12.2009
comment
К сожалению, похоже, что это все еще не работает в RTM. MS испортила это. Вы можете добавить Contracts.Requires, но волшебство на самом деле не произойдет, пока вы не загрузите инструменты CodeContracts. - person Judah Gabriel Himango; 23.06.2010

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

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

person Matt Breckon    schedule 04.11.2009