TFS策略-当代码不符合自定义准则时防止签入

TFS策略-当代码不符合自定义准则时防止签入,tfs,visual-studio-2017,commit,Tfs,Visual Studio 2017,Commit,在我们的组织中,我们使用TFS 2018和Visual Studio 2017 Enterprise 就我目前所知,有一种方法是“客户端”,从Visual Studio进行配置,选择Team\Team Project Settings\Source Control\Check in Policy\Code Analysis,然后我应该定义自定义规则集。 我需要两样东西: 设置一个自定义准则,它是默认的Microsoft准则和其他工具准则(如Roslynator或StyleCop)的混合 创建自

在我们的组织中,我们使用TFS 2018和Visual Studio 2017 Enterprise

就我目前所知,有一种方法是“客户端”,从Visual Studio进行配置,选择Team\Team Project Settings\Source Control\Check in Policy\Code Analysis,然后我应该定义自定义规则集。

我需要两样东西:

  • 设置一个自定义准则,它是默认的Microsoft准则和其他工具准则(如Roslynator或StyleCop)的混合

  • 创建自定义策略服务器端,以便在代码不符合这些准则时防止从VisualStudio(或我们可以想到的任何客户端)签入

  • 对于第一点,我将给出一个明确的简单示例。 VisualStudio中嵌入了一些指导原则。 但它们并不完整,我想扩展它们,在这里和那里获取一些东西,或者从头定义新的东西

    我想使用例如:

    • CA1500:变量名不应与字段名匹配(来自默认的Visual Studio托管二进制分析)
    • RCS1145:删除冗余的“as”操作员(从Roslynator)
    • RCS1204使用EventArgs.Empty(来自Roslynator)
    • SA1302:InterfaceNamesMustBeginWithI(来自StyleCop)
    • SA1305:字段名称不得使用注释(来自StyleCop)
    我怎么做?我可以在项目级别(比如为每个.csprj合并stylecop文件)上定义它,而不是至少在解决方案或团队项目级别定义它吗

    关于第二点,我已经定义了所附的强制评论和强制工作项。 我甚至可以定义新的策略,这是真的,但它们都可以被客户端覆盖

    有可能防止这种情况吗

  • 您可以将规则集添加到TFS源代码管理中,然后从代码分析策略编辑器中选择它。查看下面的屏幕截图:
  • 签入策略已应用于团队项目,而不是单个项目

  • 要编辑签入策略,您必须具有编辑项目级信息的权限。您可以拒绝用户的此权限,以防止他们编辑签入策略


  • 这方面的最佳解决方案分为两部分:

  • 指导用户配置正确的策略和编辑器设置。创建自定义项目模板并分发这些模板可能会有所帮助(或将自定义构建目标部署到强制执行良好默认值的计算机上)。拥有良好的本地策略将帮助人们做正确的事情,而被支持做正确事情的人可能不会试图回避这一点

  • 为您的项目设置CI生成。VST和TFS有一个很好的功能,它可以在代码更改时运行生成。您甚至可以将其设置为门控签入生成,它将在签入源之前检查源。此检查发生在服务器上,很难通过。您还可以将生成配置为始终覆盖代码分析设置,即使它们未在项目中配置。My将帮助您设置正确的MsBuild属性来执行此操作

  • 关于你更具体的问题:

    • 如果不为所有Visual Studio项目配置规则集,则无法在团队项目级别设置代码分析规则。否则,签入策略将导致签入失败,但开发人员仍必须使用正确的规则集更新解决方案中的所有项目

    • 您无法通过传递本地签入策略来阻止他人。您所能做的最好是使用Reporting Services和警报来检测违反策略的行为并采取纠正措施


    非常清晰的infos thx,但我不明白如何使用您的扩展。我单击了您的wiki,但仍然感到困惑。是否有操作/手册?屏幕截图来自哪里?Visual Studio或TFS?TFS/VSTS。您可以在新的构建管道中插入扩展,将代码分析规则集设置为您想要使用的规则集(如果要使用,请包括自定义任务的路径)。然后将输出变量传递到“附加参数”文本框中的Visual Studio Build或MsBuild任务中。我已在TFS 2018中安装了扩展,但现在…我应该做什么?我应该在生成管道中添加特定任务吗?这将是什么?