Microsoft Code Contracts и CI build server - PullRequest
35 голосов
/ 25 августа 2010

Мы переходим на .NET 4 и очень заинтересованы в реализации новых возможностей Design By Contract.

Как известно Код контракта двигатель требует установки Код контракта надстройки alt text
и VS Ultimate или Premium (для статической проверки).

Вот мои вопросы:

  1. Могу ли я использовать код переписывания контракта без установки VS на сервере сборки CI (TeamCity)?
  2. Есть ли msbuild задачи для выполнения проверки контракта?
  3. Используете ли вы проверку Code Contract с сборками CI?

1 Ответ

46 голосов
/ 01 сентября 2010

Можно ли использовать переписывание контракта кода без установки VS на сервере сборки CI (TeamCity)?

Да.Установите CodeContracts на сервере сборки.(Если он отказывается устанавливать на компьютер без Visual Studio, просто скопируйте перечисленные ниже файлы и их зависимости на сервер сборки.) После установки вы найдете инструменты CodeContract, установленные в% programfiles% \ Microsoft \ Contracts \Bin.В этом каталоге есть 4 исполняемых файла, которые вас заинтересуют:

  1. ccrewrite.exe - бинарный редактор.Это должно быть выполнено после компиляции.Он превращает ваши контракты в проверки во время выполнения или во все, что вы указываете, в которые вы хотите, чтобы они превратились.

  2. ccrefgen.exe - Это может генерировать ссылки на контрактные сборки вместе с вашими сборками.Это полезно, если вы отправляете dll для использования другими сторонами.

  3. cccheck.exe - Статическая проверка.На сервере сборки вы будете запускать этот инструмент над сборками, содержащими контракты, и он будет выдавать предупреждения и сообщения при возникновении потенциальных проблем.

  4. ccdocgen.exe - при этом создается XMLдокументация из договоров в вашем коде.Возможно, вы захотите использовать это, если вы отправляете dll с контрактами для потребления другими сторонами, или если вам просто нужны внутренние документы для вашего кода.

Есть ли msbuildзадачи для выполнения проверки контракта?

Да.С CodeContracts поставляется 2 задачи MSBuild: в том же каталоге установки CodeContracts проверьте папку MSBuild \ [framework version].В этом каталоге есть 2 файла, которые должны вам помочь: Microsoft.CodeContracts.targets и Microsoft.CodeContractAnalysis.targets.

Согласно документации CodeContracts,

Расширение сценария msbuild Microsoft .Contract.target содержит дополнительные действия по сборке для инструментария контракта времени выполнения и этапов статической проверки.В результате такого подхода можно использовать ту же функциональность при сборке из командной строки с помощью команды msbuild.Использование msbuild для проекта или решения, использующего контракты, включенные через пользовательский интерфейс VS, будет выполнять те же действия, что и соответствующая сборка под VS.

Как вы можете видеть, возможно и поддерживается интеграция инструментов в сборки CI через цели MSBuild.

Используете ли вы проверку Code Contract со сборками CI?

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

Надеюсь, это поможет!

Шляпная подсказка к книге Джона Скита C # In Depth для объяснения инструментов командной строки.

...