TFS 如何在签入期间检查 C# 中的每个类是否有 XML 摘要?

Kun*_*ang 2 c# tfs checkin

我收到一个任务,需要检查在 Team Foundation System 上签入特定类时是否带有摘要。

我找到了一种方法,在签入过程中打开代码分析,问题是规则中没有摘要检查项。

有没有办法在报到时检查每个班级是否有Summary?

是否可以自定义BuildprocessTemplate来制作?

这个入住政策评估可以吗?

public override PolicyFailure[] Evaluate()
{

List<PolicyFailure> failures = new List<PolicyFailure>();
foreach(PendingChange pc in PendingCheckin.PendingChanges.CheckedPendingChanges)
{
    if(pc.LocalItem == null)
    {
        continue;
    }

    /* Open the file */
    using(FileStream fs = new FileStream(pc.FileName,FileMode.Open,FileAccess.Read))
    {
        StreamReader fs1 = new StreamReader(fs);

        string eachline= fs1.ReadLine();

        int PublicCount=0;
        int SummaryCount = 0;

        while(eachline !="")
        {
            if (eachline.IndexOf("/// <summary>")!=-1) 
            {
                SummaryCount++;
            }

            if (eachline.IndexOf("public")!=-1) 
            {
                PublicCount++;
            }

        }

        if(PublicCount != SummaryCount)
        {
            failures.Add(new PolicyFailure("Class Summary missing"));
        }


        fs.Close();
    }
}

return failures.ToArray();
}
Run Code Online (Sandbox Code Playgroud)

Iai*_*way 5

我建议不要使用自定义 TFS 签入策略。它们在客户端上进行评估,这意味着 a) 它们会干扰开发人员工作流程 b) 它们可能会在客户端上被覆盖(并且当开发人员覆盖策略时很难收到通知),最重要的是 c)您需要管理获取将带有您的自定义策略的程序集安装到您的开发人员计算机上并保持最新状态

我认为最好的办法是将StyleCop 与 MSBuild 集成,以便在 StyleCop 检测到问题时收到构建警告或错误。有一个方便的nuget 包可以帮助您入门。这为您提供了很大的灵活性来执行代码样式规则。您可以将其与上次构建成功策略一起使用,或者更好地使用门控签入,以便在服务器上进行评估。

请记住以下几点:-

  • 如果您想因 StyleCop 违规而导致构建失败,则需要<StyleCopTreatErrorsAsWarnings>false</StyleCopTreatErrorsAsWarnings>在项目文件中进行设置。

  • 根据个人经验,我建议仅StyleCopTreatErrorsAsWarnings在发布配置上设置 false。如果您的开发人员必须先添加 xml 注释,然后才能检查某些内容是否可以编译,那么您将会遇到麻烦!

  • 您需要花一些时间来设置要为项目强制执行的 StyleCop 规则。确保它们与 .sln 一起受到源代码控制 - 您不想在单独的开发人员计算机上搞乱它们。

  • 从一个相当宽松的小规则集开始,并随着您的使用而扩展。

  • 不要浪费程序员昂贵的时间手动重新格式化代码文件以匹配样式指南。获取resharper并对其进行设置,以便代码清理功能可以正确地整理内容。