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

本文关键字:是否 摘要 XML 何检查 检查 TFS | 更新日期: 2023-09-27 18:02:32

我得到了一个任务,这是需要检查是否一个特定的类与摘要时,签入团队基础系统。

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

是否有办法在签入时检查每个类是否使用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();
}

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

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

我认为,最好的办法是将StyleCop与MSBuild集成,这样如果StyleCop检测到问题,您就可以获得构建警告或错误。有一个方便的nuget包可以帮助您开始。这使您在执行代码样式规则时具有很大的灵活性。您可以将此策略与最后一次构建成功策略一起使用,或者更好地使用Gated Checkins,以便在服务器上进行评估。

请牢记以下内容:-

  • 如果你想因为违反StyleCop而导致构建失败,你需要在项目文件中设置<StyleCopTreatErrorsAsWarnings>false</StyleCopTreatErrorsAsWarnings>

  • 根据个人经验,我建议在发布配置中只设置StyleCopTreatErrorsAsWarnings false。如果您的开发人员必须在检查某些内容是否编译之前添加xml注释,那么您将遇到麻烦!

  • 你需要花一点时间来设置你想要为你的项目执行的StyleCop规则。确保它们与。sln一起得到了源代码控制-你不想在单独的开发人员机器上弄乱它们。

  • 从一个小的规则集开始,这个规则集是相当允许的,并且随着你的发展而扩展。

  • 不要浪费程序员昂贵的时间手动重新格式化代码文件以匹配样式指南。获得resharper并设置它,以便代码清理函数正确地整理内容。

  1. 正如Richard所说,检查这一点的一种方法是编写自定义策略。在这里可以找到一个小教程

  2. 另一种方法是编写一个stylecop规则,检查类是否有摘要。并使用style -checkinpolicy

你不能用代码分析做这个,因为代码分析检查编译后的代码。在编译过程中,注释消失了,没有办法检查它们。