gpt4 book ai didi

c# - 在 C# 中以编程方式读取 VS .coveragexml 文件

转载 作者:行者123 更新时间:2023-11-30 16:32:16 25 4
gpt4 key购买 nike

所以我有一些代码可以从 .coverage 文件中读取方法...

using (CoverageInfo info = CoverageInfo.CreateFromFile(this.myCoverageFile))
{

CoverageDS ds = info.BuildDataSet();

foreach (ICoverageModule coverageModule in info.Modules)
{
CodeModule currentModule = new CodeModule(coverageModule.Name);
byte[] coverageBuffer = coverageModule.GetCoverageBuffer(null);

using (ISymbolReader reader = coverageModule.Symbols.CreateReader())
{
Method currentMethod;
while (reader.GetNextMethod(out currentMethod, coverageBuffer))
{
if (currentMethod != null)
{
currentModule.Methods.Add(currentMethod);
}
}
}

returnModules.Add(currentModule);
}
}

...但我也希望能够读取已导出到 xml 的 .coverage 文件。这样做的原因是 .coverage 文件要求源 dll 位于它们在测量代码覆盖率时所在的确切位置,这对我不起作用。

当我尝试使用 CreateFromFile(string) 加载 coveragexml 文件时,出现以下异常。

Microsoft.VisualStudio.Coverage.Analysis.InvalidCoverageFileException was unhandled Message=Coverage file "unittestcoverage.coveragexml" is invalid or corrupt.

coveragexml 文件在 Visual Studio 中打开得很好,所以我认为文件格式没有任何问题。

我知道 CoverageDS 可以导入 xml 文件,但 API 不够直观,我能找到的唯一使用示例是...

using(CoverageInfo info = CoverageInfo.CreateFromFile(fileString))
{
CoverageDS data = info.BuildDataSet();
data.ExportXml(xmlFile);
}

...这并没有告诉我如何从该文件中实际读取覆盖率数据。

有人知道如何处理 .coveragexml 文件中的代码覆盖率数据吗?

最佳答案

关于以编程方式处理代码覆盖率信息的最佳介绍可能可用 here以及链接的 ms_joc 博客中。

我很确定您可以将“CreateInfoFromFile”与您在上述示例中导出的 .coverage 文件或 XML 文件一起使用。

更新:如果 coveragexml 作为参数传递,CreateInfoFromFile 将引发异常。这是一个替代方案:

CoverageDS dataSet = new CoverageDS();
dataSet.ImportXml(@"c:\temp\test.coveragexml");

foreach (CoverageDSPriv.ModuleRow module in dataSet.Module)
{
Console.WriteLine(String.Format("{0} Covered: {1} Not Covered: {2}", module.ModuleName, module.LinesCovered, module.LinesNotCovered));
}

关于c# - 在 C# 中以编程方式读取 VS .coveragexml 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4170803/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com