#c# #code-coverage
#c# #code-покрытие
Вопрос:
Я использую Visual Studio для поиска покрытия кода. Я сгенерировал файл .coverage и могу открыть его в Visual Studio. Я хочу преобразовать его в файл .coveragexml. Я использую CoverageInfo, CoverageDS
классы. Вот код, который я пытаюсь:
CoverageInfo info = CoverageInfo.CreateFromFile(coverageFilePath, binaryPath,symbolPath);
CoverageDS dataSet = info.BuildDataSet();
dataSet.WriteXml(outfile);
Поскольку файл покрытия большой, вызов info.BuildDataSet выдает исключение нехватки памяти. Есть ли какой-либо альтернативный способ получить coveragexml?
Я ссылался на блог MSDN http://blogs.msdn.com/b/phuene/archive/2009/12/01/programmatic-coverage-analysis-in-visual-studio-2010.aspx в котором также упоминается этот случай. В этой статье упоминается об использовании ICoverageModule
интерфейса для получения информации о модуле по модулю из CoverageInfo
класса. Но как мне преобразовать информацию об этом модуле в XML? В блоге показан пример того, как информация о модуле может быть проанализирована и распечатана. Но я ищу преобразование этого в файл coveragexml.
Ответ №1:
Я столкнулся с тем же System.OutOfMemoryException
при вызове CoverageInfo.BuildDataSet(...)
. Чтобы обойти проблему, я изменил проект на 64-разрядное приложение, что позволяет процессу использовать гораздо больше памяти. Вам также потребуется ссылаться на 64-разрядные версии:
- Microsoft.VisualStudio.Покрытие.Analysis.dll
- Microsoft.VisualStudio.Покрытие.Interop.dll
Вы можете найти их в системе, в которой установлена TFS. Посмотрите C:Program FilesMicrosoft Team Foundation Server XX.0Application TierTFSJobAgentPlugins
.
Ответ №2:
Вероятно, немного опоздал на вечеринку…
Но я создал инструмент dotnet для преобразования .coverage
файлов в .coveragexml
файлы для поддержки покрытия кода SonarCloud при использовании VSTest @ 2.
Смотрите эту ссылку для получения подробной информации: https://github.com/StefH/CoverageConverter