使用 ReSharper 和 TeamCity 检测构建中的代码问题
您是否知道,您可以在 TeamCity 服务器上为您的构建运行 ReSharper 的 代码检查? 实际上,我们很久以前就在 TeamCity 中添加了对该功能的支持,但似乎该功能并不广为人知,尤其是对 ReSharper 用户而言。 设置本身非常简单,我们将逐步引导您完成设置,并额外添加一些有用的功能。
要开始使用 TeamCity,请学习 TeamCity 文档。
在 TeamCity 中激活 .NET 检查
将 ReSharper 检查添加到构建过程中仅需添加一个名为 检查(.NET) 的构建步骤。 唯一需要的参数是 Visual Studio 解决方案文件。

如果我们未指定 自定义设置配置文件路径 ,TeamCity 将采用代码检查的默认设置。 然而,我们可以配置这些设置以匹配我们自己或团队的标准。 这是在 ReSharper 选项的 页面上完成的。 我们可以更改任何检查的 严重性 ,例如使用 String.IsNullOrEmpty 的检查:

...并将设置保存到 解决方案团队共享层。 然后,这会将设置保存到一个名为 {Solution}.sln.DotSettings 的文件中,该文件通常会被检入源代码管理中,以便当解决方案在 Visual Studio 中打开时,它会自动应用于其他团队成员。 我们可以使用相同的设置文件为 TeamCity 指定自定义检查设置:

分析结果
当构建步骤运行时,TeamCity 会生成一个可导航的报告,供我们分析检查结果。

我们可以浏览整个项目或特定命名空间的检查。 检查按 类别 、问题类型以及右侧窗格中的相应文件分组。 我们甚至可以通过单击行号导航到实际文件。 不过,为此,我们需要安装 TeamCity Visual Studio 插件 并运行 Visual Studio(如果未安装,单击链接会提示您下载并安装该插件的对话框)。
根据检查严重性采取行动
在服务器端添加检查的主要好处之一是可以实施一定程度的代码质量,从而使构建过程可以根据一系列条件采取行动。 例如,如果检测到过多的警告或错误,我们可能希望构建失败。
在 构建失败条件 的 项目配置 窗口中,我们可以添加一个新的 构建失败 条件:

我们选择 在指标变化时使构建失败 ,然后指明是否希望根据警告或错误使构建失败。 在我们的案例中,我们将选择错误,并在错误数量超过一个时使构建失败。

显然,如果我们希望检查对构建状态产生影响,即使构建失败,我们只能基于警告或错误来实现。 因此,提示和建议不能被使用。 因此,在 ReSharper 中配置检查严重性时,我们应考虑到这一点。
如果我们现在再次运行构建,由于错误数量大于一个,构建应该会失败。 以下是相同输入和检查的输出,但一个运行了构建失败条件,另一个没有运行。

检查复制/粘贴代码
尽管严格来说,这与 ReSharper 功能无关,但既然我们在讨论构建过程中的代码质量,也有必要提到 TeamCity 可以检查代码重复。
与之前类似,激活代码重复检查只需添加一个新的构建步骤,即 重复项查找器(.NET)。 我们可以指明要忽略的文件夹,是否需要考虑命名空间、类型名称,以及其他一些选项。

输出是一个格式精美的可导航界面,允许我们浏览不同的文件,并查看 TeamCity 检测到的重复内容的并排比较(下方为空间限制而调整大小的示例):

如预期,如果代码重复过多,我们也可以使构建失败。

摘要
使用 JetBrains 工具,将代码质量检测功能添加到构建过程中,并在生产代码中不应存在的问题被引入时使构建失败,变得非常简单。