Microsoft Code Contracts和CI构建服务器

Ser*_*oda 35 .net c# teamcity continuous-integration code-contracts

我们正在迁移到.NET 4,并且对实现新的按设计合同功能非常感兴趣.

我们知道Code Contract引擎需要安装Code Contract addin 替代文字
和VS Ultimate或Premium(用于静态检查).

这是我的问题:

  1. 如果不在CI构建服务器(TeamCity)上安装VS,我可以使用代码合同重写吗?
  2. 是否有任何msbuild任务执行合同检查?
  3. 您是否在CI构建中使用Code Contract的验证?

Jud*_*ngo 46

如果不在CI构建服务器(TeamCity)上安装VS,我可以使用代码合同重写吗?

是.在构建服务器上安装CodeContracts.(如果拒绝在没有Visual Studio的计算机上安装,只需将下面列出的文件及其依赖项复制到构建服务器上.)安装完成后,您将在%programfiles%\ Microsoft\Contracts \中找到安装的CodeContract工具.宾.在该目录中,您将感兴趣的是4个可执行文件:

  1. ccrewrite.exe - 二进制重写器.这应该在编译后执行.它会将您的合同变为运行时检查或您希望它们转换为您指定的任何内容.

  2. ccrefgen.exe - 这可以在程序集旁边生成合同引用程序集.如果您正在运送dll供其他方使用,这将非常有用.

  3. cccheck.exe - 静态检查程序.在构建服务器上,您将在包含合同的程序集上运行此工具,并在遇到潜在问题时发出警告和消息.

  4. ccdocgen.exe - 这将根据代码中的合同生成XML文档.如果您正在运送带有合同供其他方消费的dll,或者您只需要代码的内部文档,则可能需要使用此功能.

是否有任何msbuild任务执行合同检查?

是.CodeContracts有两个MSBuild任务:在相同的CodeContracts安装目录中,查看MSBuild\[framework version]文件夹.在该目录中,有2个文件可以帮助您:Microsoft.CodeContracts.targets和Microsoft.CodeContractAnalysis.targets.

根据CodeContracts文档,

msbuild脚本扩展Microsoft .Contract.目标包含运行时合同检测和静态验证步骤的额外构建操作.作为这种方法的结果,当使用msbuild命令从命令行构建时,可以使用相同的功能.在使用通过VS用户界面启用的合同的项目或解决方案上使用msbuild将执行与VS下相应构建相同的操作.

如您所见,可以并且支持通过MSBuild目标将工具集成到CI构建中.

您是否在CI构建中使用Code Contract的验证?

假设您的意思是使用警告/消息进行静态检查,我已经亲自完成了这项工作,但是在一个大项目中没有这样做.

我希望这有帮助!

向Jon Skeet的C#In Depth书中提示解释命令行工具.