C# 在C中以编程方式读取VS.coveragexml文件#
所以我有一些代码可以读取.coverage文件中的方法C# 在C中以编程方式读取VS.coveragexml文件#,c#,visual-studio-2010,code-coverage,C#,Visual Studio 2010,Code Coverage,所以我有一些代码可以读取.coverage文件中的方法 using (CoverageInfo info = CoverageInfo.CreateFromFile(this.myCoverageFile)) { CoverageDS ds = info.BuildDataSet(); foreach (ICoverageModule coverageModule in info.Modules) { CodeModule currentModule
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(字符串)加载coveragexml文件时,我得到以下异常
Microsoft.VisualStudio.Coverage.Analysis.InvalidCoverage文件异常
was unhandled Message=覆盖率文件
“unittestcoverage.coveragexml”是
无效的或腐败的
coveragexml文件在VisualStudio中可以正常打开,因此我认为该文件的格式没有任何问题
我知道CoverageDS可以导入xml文件,但API不够直观,我能找到的唯一一个使用它的例子是
using(CoverageInfo info = CoverageInfo.CreateFromFile(fileString))
{
CoverageDS data = info.BuildDataSet();
data.ExportXml(xmlFile);
}
…这并没有告诉我如何实际读取该文件中的覆盖率数据
有人知道如何处理.coveragexml文件中的代码覆盖率数据吗?可能是以编程方式操作代码覆盖率信息的最佳介绍,也可以在链接的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));
}
你试过CoverageDS.ReadXml(fileName\u string)方法吗?是的,我看过你提到的那篇博客,我发现它是最好、最有用的。如果将导出的xml文件交给CreateInfoFromFile,它似乎会引发异常(这是我尝试的第一件事情之一)。我将用它更新问题。用不同的方法更新。这正是我想要的。我只使用DataSet接口就成功地提取了数据,但这要好得多。“若要将二进制VSTest.Console输出转换为Microsoft CoverageDS XML格式,您可以使用下面V0.14发行说明中引用的一个预构建应用程序,或者您可以构建以下转换器应用程序:“我认为~~”CoverageInfo.CreateFromFile“用于从二进制文件(从VSTest.Console)加载,而不是从trx文件加载。”(这只是xml)。看:让我吃惊的是我不知道(哦)trx文件只是xml(