Есть ли в Visual Studio 2010 Premium инструменты для работы с контрактами?
-
05-07-2019 - |
Вопрос
Согласно этой матрице функций Visual Studio 2010 Premium (RC) включает в себя «статический анализ кода».
Однако добавление вызовов в Contract.Requires
при запуске моих методов, похоже, не имеет никакого эффекта. Я не получаю исключения во время выполнения, если контракт нарушен. Я не получаю предупреждения компилятора, если контракт не может быть доказан. Я также не могу найти " Кодовые контракты " вкладка в настройках проекта.
Я упускаю что-то очевидное или эта функция доступна только в окончательной версии?
Решение
Похоже, что существует некоторая путаница относительно того, включены или нет Code Contracts в платформу, которая идет с бета-версией VS2010, или даже в самой VS2010. форум Code Contracts (и особенно этот пост ) содержит несколько упоминаний пока без ответов.
<Ч>Я не думаю, что Code Contracts подпадает под статический анализ кода. Я думаю, что статический анализ кода относится к другим инструментам анализа кода, таким как FxCop.
Я пытался использовать Contract.Requires
в VS2010 beta 2 Ultimate Edition, но у меня такое же поведение, как и у вас. Если вы посмотрите в свойствах проекта на вкладке «Анализ кода», вы сможете включить анализ кода, но это не относится к контрактам кода.
Согласно комментарию Мелитты (из команды библиотек базовых классов) к статье о подключении Сделать статическую проверку контракта данных доступной в Professional Edition :
... но ограничение на инструмент статического анализа означает этот предстоящий выпуск. Он сохраняет целостность истории анализа кода, поскольку для инструментов статического анализа требуется VSTS.
Это говорит о том, что у вас (будет) должна быть версия системы группы, чтобы получить версию Code Contracts во время компиляции.
Другие советы
Чтобы получить статический анализ в бета-версии 2, необходимо загрузить и установить биты Code Contracts (1.2.21023.14 или более поздней версии) по адресу MSDN DevLabs . Затем в свойствах проекта теперь будет вкладка Code Contracts ... отсюда вы можете включить статический анализ ...
Поведение, которое вы видите, связано с тем, что API Code Contracts находится в сборке mscorlib, что позволяет утверждениям работать, но не более того.
Я предполагаю, что RTM не будет в этом необходимости.
Вам необходимо включить проверку выполнения контрактов кода в свойствах проекта. Если эта панель настроек не существует, вам необходимо установить загрузку Code Contracts от Microsoft (несмотря на то, что Contract.Requires существует в платформе). Р>
В выпусках Professional доступна только проверка времени выполнения.