将 StyleCop 与 TFS CI 集成的最佳方式

Posted

技术标签:

【中文标题】将 StyleCop 与 TFS CI 集成的最佳方式【英文标题】:Best way to integrate StyleCop with TFS CI 【发布时间】:2010-10-08 03:37:30 【问题描述】:

我一直在研究如何为我正在进行的项目启用源分析,并计划使用 StyleCop。我的设置是用于源代码控制的 TFS 服务器,使用 TFS 持续集成。我想为在构建机器上运行的 CI 构建和日常构建启用源分析,而不仅仅是在开发人员的机器上运行的那些。

这是我阅读的 StyleCop 文档中关于该主题的一篇文章: http://blog.newagesolution.net/2008/07/how-to-use-stylecop-and-msbuild-and.html。它基本上为此目的修改了csproj文件。

我还阅读了有关如何将 StyleCop 与构建自动化集成的其他意见,其中建议使用构建任务做同样的事情:

http://blog.newagesolution.net/2008/07/how-to-use-stylecop-and-msbuild-and.html http://freetodev.spaces.live.com/blog/cns!EC3C8F2028D842D5!400.entry.

你有什么意见?你有过类似的项目并做过类似的事情吗?

【问题讨论】:

【参考方案1】:

一般使用 StyleCop 的几点:

您不需要在您的(或构建的)机器上安装 StyleCop - 只需将 StyleCop 的二进制文件添加到您的源代码管理中(大约 1.5 MB 的内容)

然后简单地将相对引用添加到您的项目文件中,如下所示(我省略了 ):

导入项目="..\..\lib\Microsoft StyleCop\Microsoft.StyleCop.Targets"

我们使用项目文件中的 StyleCopTreatErrorsAsWarnings 设置将所有 StyleCop 警告视为错误。

对于遗留项目,您可以使用微软提供的工具自动将所有现有源文件设置为忽略。 您可以将 StyleCop 设置文件 (Settings.StyleCop) 放在 VS 解决方案所在的根目录中(当然也可以将其置于源代码管理之下)。 StyleCop 知道如何自动找到这个文件(通过查找目录树)。这样您就可以为每个解决方案进行自定义设置。 我们关闭了某些我们认为不太实用的 StyleCop 规则。

这样 StyleCop 将被集成到您的编译步骤中,因此它将成为 CI 构建的一部分。

【讨论】:

我的团队是如何做到这一点的。我们不介意 .csproj 的更改,它有助于我们在此过程中添加其他功能和自定义任务。 现在似乎有一个 nuget 包! :D 供参考,NuGet包为StyleCop.MSBuild【参考方案2】:

我们在几个项目中成功使用了以下文章中的方法...

http://blogs.msdn.com/sourceanalysis/pages/source-analysis-msbuild-integration.aspx http://blogs.msdn.com/sourceanalysis/archive/2008/11/11/introducing-stylecop-on-legacy-projects.aspx

基本上你设置了几个环境变量,在所有 .csproj 文件中引用它们,这样你就可以为每个开发人员提供不同的工作目录,在构建机器上安装 StyleCop MSBuild 组件,然后你就可以离开了。无需更改团队构建。

【讨论】:

【参考方案3】:

转到 Visual Studio,右键单击解决方案 > 管理 Nuget 包 > 安装 StyleCop.MSBuild

就是这样=)

【讨论】:

以上是关于将 StyleCop 与 TFS CI 集成的最佳方式的主要内容,如果未能解决你的问题,请参考以下文章

是否有 CI 服务器软件可以完成所有这些工作?

我可以从 TFS CI Build 更改 VS2010 数据库项目的部署脚本的位置吗

卡住不活动的 msbuild.exe 进程、锁定 Stylecop.dll、Nuget AccessViolationException 和 CI 构建相互冲突的奥秘

如何与Jenkins集成.NET项目

将 TFS 构建与发布管理集成

持续集成CI&CD之CI的完整版最佳实践