コード カバレッジが特定の値を超えていることを確認するために、カスタムの TFS チェックイン ポリシーに取り組んでいます。いくつかの例を見つけたので、それらを VS 2010 で動作させようとしています。
現在、実行中のコードがいくつかあり、実際に遅いことを除いて動作しているようです。どの回線が「最も遅い」かを言うのは難しいです。多分それはデータの量です。
このコードを最適化する方法を誰かが知っていますか?
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);
}