C# 自定义TFS签入策略的编程代码覆盖率分析非常缓慢

C# 自定义TFS签入策略的编程代码覆盖率分析非常缓慢,c#,visual-studio-2010,code-coverage,checkin-policy,C#,Visual Studio 2010,Code Coverage,Checkin Policy,我正在制定自定义TFS签入策略,以确保我们的代码覆盖率高于某个值。我已经找到了一些例子,现在我正试图让它们与VS2010一起使用 目前我有一些正在运行的代码,它似乎正在运行,只是速度很慢。 很难说哪条线是“最慢的”。也许更多的是数据量 有人知道我如何优化这段代码吗 private static decimal CalculateTotalCodeCoverage(string binariesFolder, string codeCoverageFile) { int blocksCove

我正在制定自定义TFS签入策略,以确保我们的代码覆盖率高于某个值。我已经找到了一些例子,现在我正试图让它们与VS2010一起使用

目前我有一些正在运行的代码,它似乎正在运行,只是速度很慢。 很难说哪条线是“最慢的”。也许更多的是数据量

有人知道我如何优化这段代码吗

 private static decimal CalculateTotalCodeCoverage(string binariesFolder, string codeCoverageFile)
 {
 int blocksCovered = 0;
 int blocksNotCovered = 0;

 using (CoverageInfo info = CoverageInfo.CreateFromFile(codeCoverageFile,
     new string[] { binariesFolder },
     new string[] { binariesFolder }))
 {
     List<BlockLineRange> lines = new List<BlockLineRange>();

     foreach (ICoverageModule module in info.Modules)
     {
         byte[] coverageBuffer = module.GetCoverageBuffer(null);

         using (ISymbolReader reader = module.Symbols.CreateReader())
         {
             uint methodId;
             string methodName;
             string undecoratedMethodName;
             string className;
             string namespaceName;

             lines.Clear();
             while (reader.GetNextMethod(
                 out methodId,
                 out methodName,
                 out undecoratedMethodName,
                 out className,
                 out namespaceName,
                 lines))
             {
                 CoverageStatistics stats = CoverageInfo.GetMethodStatistics(coverageBuffer, lines);

                 blocksCovered += stats.BlocksCovered;
                 blocksNotCovered += stats.BlocksNotCovered;
             }
         }
     }
 }

 return GetPercentCoverage(blocksCovered, blocksNotCovered);
private static decimal CalculateTotalCodeCoverage(字符串二进制文件夹,字符串CodeCoverage文件)
{
int blocksCovered=0;
int blocksnotovered=0;
使用(CoverageInfo info=CoverageInfo.CreateFromFile(codeCoverageFile,
新字符串[]{binariesFolder},
新字符串[]{binariesFolder})
{
列表行=新列表();
foreach(信息模块中的ICoverageModule模块)
{
字节[]coverageBuffer=module.GetCoverageBuffer(null);
使用(ISymbolReader=module.Symbols.CreateReader())
{
uint方法ID;
字符串方法名;
字符串未修饰的方法名;
字符串类名称;
字符串名称空间名称;
行。清除();
while(reader.GetNextMethod(
出了methodId,
出方法名,
输出未修饰的方法名,
出类名,
输出名称空间名称,
(行)
{
CoverageStatistics=CoverageInfo.GetMethodStatistics(coverageBuffer,行);
blocksCovered+=stats.blocksCovered;
blocksnotovered+=stats.blocksnotovered;
}
}
}
}
返回GetPercentCoverage(blocksCovered、blocksNotCovered);

}

您是否尝试过使用类似Visual Studio的探查器?我敢肯定,您可以附加到另一个visual studio实例来执行此操作?是的,函数CoverageInfo.GetMethodStatistics花费的时间最长。