Подтвердить что ты не робот

Контракты Microsoft Code и сервер сборки CI

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

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

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

  • Можно ли использовать перекодировку кода без установки VS на CI build Server (TeamCity)?
  • Есть ли какие-либо msbuild для выполнения проверки контракта?
  • Вы используете проверку кода контракта с CI-сборками?
4b9b3361

Ответ 1

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

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

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

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

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

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

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

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

В соответствии с документацией CodeContracts,

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

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

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

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

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

Совет по шляпе Jon Skeet С# In Depth для объяснения инструментов командной строки.