Utilitas cakupan kode dotnet-coverage
Artikel ini berlaku untuk: ✔️ .NET Core 3.1 SDK dan versi yang lebih baru
Sinopsis
dotnet-coverage [-h, --help] [--version] <command>
Deskripsi
Alat dotnet-coverage
:
- Memungkinkan pengumpulan data cakupan kode lintas platform dari proses yang sedang berjalan.
- Menyediakan penggabungan lintas platform laporan cakupan kode.
Opsi
-h|--help
Tampilkan bantuan baris perintah.
--version
Menampilkan versi utilitas dotnet-coverage.
Instal
Untuk menginstal versi rilis terbaru paket dotnet-coverage
NuGet, gunakan perintah penginstalan alat dotnet:
dotnet tool install --global dotnet-coverage
Perintah
Perintah |
---|
dotnet-coverage merge |
dotnet-coverage collect |
dotnet-coverage connect |
dotnet-coverage snapshot |
dotnet-coverage shutdown |
instrumen cakupan dotnet |
dotnet-coverage merge
Perintah merge
digunakan untuk menggabungkan beberapa laporan cakupan kode menjadi satu. Perintah ini tersedia di semua platform. Perintah ini mendukung format laporan cakupan kode berikut:
coverage
cobertura
xml
Sinopsis
dotnet-coverage merge
[--remove-input-files]
[-o|--output <output>] [-f|--output-format <output-format>]
[-l|--log-file <log-file>] [-ll|--log-level <log-level>] [-?|-h|--help]
<files>
Argumen
<files>
Laporan cakupan kode input.
Opsi
--remove-input-files
Menghapus semua laporan cakupan input yang digabungkan.
-r, --recursive
.NET 7 SDK dan versi yang lebih lama hanya Cari laporan cakupan di subdirektori.
-o|--output <output>
Mengatur file output laporan cakupan kode.
-f|--output-format <output-format>
Format file output Nilai yang didukung:
coverage
,xml
, dancobertura
. Defaultnya adalahcoverage
(format biner yang dapat dibuka di Visual Studio).-l|--log-file <log-file>
Mengatur jalur file log. Saat Anda menyediakan direktori (dengan pemisah jalur di bagian akhir), file log baru dibuat untuk setiap proses yang sedang dianalisis.
-ll|--log-level <log-level>
Mengatur tingkat log. Nilai yang didukung:
Error
,Info
, danVerbose
.
dotnet-coverage collect
Perintah collect
ini digunakan untuk mengumpulkan data cakupan kode untuk setiap proses .NET dan subprosesnya. Misalnya, Anda dapat mengumpulkan data cakupan kode untuk aplikasi konsol atau aplikasi Blazor. Perintah ini mendukung instrumentasi dinamis dan statis. Instrumentasi statis tersedia di semua platform. Anda dapat menentukan file yang akan diinstrumentasikan secara statis menggunakan include-files
opsi . Instrumentasi dinamis tersedia di Windows (x86, x64 dan Arm64), Linux (x64), dan macOS (x64). Perintah hanya mendukung modul .NET. Modul asli tidak didukung.
Sinopsis
Perintah collect
dapat berjalan dalam dua mode.
Mode Perintah
Perintah collect
akan mengumpulkan cakupan kode untuk proses yang diberikan yang dijalankan oleh argumen command
.
dotnet-coverage collect
[-s|--settings <settings>] [-id|--session-id <session-id>]
[-if|--include-files <include-files>] [-o|--output <output>]
[-f|--output-format <output-format>] [-l|--log-file <log-file>]
[-ll|--log-level <log-level>] [-?|-h|--help]
<command> <args>
Mode Server
Perintah collect
menghosting server untuk pengumpulan cakupan kode. Klien dapat terhubung ke server melalui perintah connect
.
dotnet-coverage collect
[-s|--settings <settings>] [-id|--session-id <session-id>]
[-sv|--server-mode] [-b|--background] [-t|--timeout]
[-if|--include-files <include-files>] [-o|--output <output>]
[-f|--output-format <output-format>] [-l|--log-file <log-file>]
[-ll|--log-level <log-level>] [-?|-h|--help]
Argumen
<command>
Perintah untuk mengumpulkan data cakupan kode.
<args>
Argumen baris perintah untuk perintah.
Opsi
-s|--settings <settings>
Mengatur jalur ke pengaturan cakupan kode XML.
-id|--session-id <session-id>
Menentukan ID sesi cakupan kode. Jika tidak disediakan, alat ini akan menghasilkan GUID acak.
-sv|--server-mode
Memulai kolektor dalam mode server. Klien dapat terhubung ke server dengan perintah
connect
.-b|--background
Memulai server pengumpulan cakupan kode dalam proses latar belakang baru. Klien dapat terhubung ke server dengan perintah
connect
.-t|--timeout
Waktu habis (dalam milidetik) untuk komunikasi antarproseksi antara klien dan server.
-if|--include-files <include-files>
Menentukan daftar file yang akan diinstrumentasikan secara statis.
-o|--output <output>
Mengatur file output laporan cakupan kode.
-f|--output-format <output-format>
Format file output Nilai yang didukung:
coverage
,xml
, dancobertura
. Defaultnya adalahcoverage
(format biner yang dapat dibuka di Visual Studio).-l|--log-file <log-file>
Mengatur jalur file log. Saat Anda menyediakan direktori (dengan pemisah jalur di bagian akhir), file log baru dibuat untuk setiap proses yang sedang dianalisis.
-ll|--log-level <log-level>
Mengatur tingkat log. Nilai yang didukung:
Error
,Info
, danVerbose
.
dotnet-coverage connect
Perintah connect
ini digunakan untuk terhubung dengan server yang ada dan mengumpulkan data cakupan kode untuk setiap proses .NET dan subprosesnya. Misalnya, Anda dapat mengumpulkan data cakupan kode untuk aplikasi konsol atau aplikasi Blazor. Perintah hanya mendukung modul .NET. Modul asli tidak didukung.
Catatan
Perintah akan menggunakan instrumentasi dinamis untuk semua subproses yang tersedia di Windows (x86, x64 dan Arm64), Linux (x64), dan macOS (x64). Jika Anda perlu secara statis melengkapi perintah penggunaan instrument
modul .NET (dengan opsi ID sesi yang sesuai) sebelum menjalankan connect
perintah.
Sinopsis
dotnet-coverage connect
[-b|--background] [-t|--timeout]
[-l|--log-file <log-file>] [-ll|--log-level <log-level>] [-?|-h|--help]
<session>
<command> <args>
Argumen
<session>
ID sesi server yang dihosting oleh perintah
collect
.<command>
Perintah untuk mengumpulkan data cakupan kode.
<args>
Argumen baris perintah untuk perintah.
Opsi
-b|--background
Memulai klien dalam proses latar belakang baru.
-t|--timeout
Waktu habis (dalam milidetik) untuk komunikasi antarproses antara klien dan server.*
-l|--log-file <log-file>
-l|--log-file <log-file>
Mengatur jalur file log. Saat Anda menyediakan direktori (dengan pemisah jalur di bagian akhir), file log baru dibuat untuk setiap proses yang sedang dianalisis.
-ll|--log-level <log-level>
Mengatur tingkat log. Nilai yang didukung:
Error
,Info
, danVerbose
.
dotnet-coverage snapshot
Membuat file cakupan untuk koleksi cakupan kode yang ada.
Sinopsis
dotnet-coverage snapshot
[-r|--reset]
[-o|--output <output>]
[-tn|--tag-name <tag-name>] [-tid|--tag-identifier <tag-identifier>]
[-t|--timeout]
[-l|--log-file <log-file>] [-ll|--log-level <log-level>] [-?|-h|--help]
<session>
Argumen
<session>
ID sesi koleksi tempat file cakupan akan dibuat.
Opsi
-r|--reset <reset>
Menghapus informasi cakupan yang ada setelah file cakupan dibuat.
-o|--output <output>
Mengatur file output laporan cakupan kode. Jika tidak disediakan, itu dihasilkan secara otomatis dengan tanda waktu.
-tn|--tag-name <tag-name>
Membuat nama tag rekam jepret dalam file cakupan dengan informasi cakupan saat ini. Nama tag dan pengidentifikasi tag saling inklusif.
-tid|--tag-identifier <tag-identifier>
Membuat pengidentifikasi tag rekam jepret dalam file cakupan dengan informasi cakupan saat ini. Nama tag dan pengidentifikasi tag saling inklusif.
-t|--timeout
Waktu habis (dalam milidetik) untuk komunikasi antarproses antara klien dan server.
-l|--log-file <log-file>
Mengatur jalur file log. Saat Anda menyediakan direktori (dengan pemisah jalur di bagian akhir), file log baru dibuat untuk setiap proses yang sedang dianalisis.
-ll|--log-level <log-level>
Mengatur tingkat log. Nilai yang didukung:
Error
,Info
, danVerbose
.
dotnet-coverage shutdown
Menutup kumpulan cakupan kode yang ada.
Sinopsis
dotnet-coverage shutdown
[-t|--timeout]
[-l|--log-file <log-file>] [-ll|--log-level <log-level>] [-?|-h|--help]
<session>
Argumen
<session>
ID sesi koleksi yang akan ditutup.
Opsi
-t|--timeout
Waktu habis (dalam milidetik) untuk komunikasi antarprosces dengan server.
-l|--log-file <log-file>
Mengatur jalur file log. Saat Anda menyediakan direktori (dengan pemisah jalur di bagian akhir), file log baru dibuat untuk setiap proses yang sedang dianalisis.
-ll|--log-level <log-level>
Mengatur tingkat log. Nilai yang didukung:
Error
,Info
, danVerbose
.
instrumen cakupan dotnet
Perintah instrumen digunakan untuk melengkapi biner pada disk.
Sinopsis
dotnet-coverage instrument
[-s|--settings <settings>] [-id|--session-id <session-id>]
[-o|--output <output>] [-l|--log-file <log-file>]
[-ll|--log-level <log-level>] [-?|-h|--help]
<input-file>
Argumen
<input-file>
Biner input.
Opsi
-s|--settings <settings>
Mengatur jalur ke pengaturan cakupan kode XML.
-id|--session-id <session-id>
Menentukan ID sesi cakupan kode. Jika tidak disediakan, alat ini akan menghasilkan GUID acak.
-o|--output <output>
Mengatur jalur ke biner file output. Jika tidak disediakan, instrumentasi akan dilakukan di tempat.
-l|--log-file <log-file>
Mengatur jalur file log. Saat Anda menyediakan direktori (dengan pemisah jalur di bagian akhir), file log baru dibuat untuk setiap proses yang sedang dianalisis.
-ll|--log-level <log-level>
Mengatur tingkat log. Nilai yang didukung:
Error
,Info
, danVerbose
.
Sampel skenario
Mengumpulkan cakupan kode
Kumpulkan data cakupan kode untuk aplikasi .NET apa pun (seperti konsol atau Blazor) dengan menggunakan perintah berikut:
dotnet-coverage collect dotnet run
Dalam kasus aplikasi yang memerlukan sinyal untuk dihentikan, Anda dapat menggunakan Ctrl+C, yang masih akan memungkinkan Anda mengumpulkan data cakupan kode. Untuk argumen , Anda dapat memberikan perintah apa pun yang akhirnya akan memulai aplikasi .NET. Misalnya, ini bisa menjadi skrip PowerShell.
Sesi
Saat Anda menjalankan analisis cakupan kode di server .NET yang hanya menunggu pesan dan mengirim respons, Anda memerlukan cara untuk menghentikan server untuk mendapatkan hasil cakupan kode akhir. Anda dapat menggunakan Ctrl+C secara lokal, tetapi tidak di Azure Pipelines. Untuk skenario ini, Anda dapat menggunakan sesi. Anda dapat menentukan ID sesi saat memulai pengumpulan, lalu menggunakan perintah shutdown
untuk menghentikan pengumpulan dan server.
Misalnya, asumsikan Anda memiliki server di direktori D:\serverexample\server dan proyek pengujian di direktori D:\serverexample\tests. Pengujian berkomunikasi dengan server melalui jaringan. Anda dapat memulai pengumpulan cakupan kode untuk server sebagai berikut:
D:\serverexample\server> dotnet-coverage collect --session-id serverdemo "dotnet run"
ID Sesi ditentukan sebagai serverdemo
. Kemudian Anda dapat menjalankan pengujian sebagai berikut:
D:\serverexample\tests> dotnet test
File cakupan kode untuk sesi serverdemo
dapat dihasilkan dengan cakupan saat ini sebagai berikut:
dotnet-coverage snapshot --output after_first_test.coverage serverdemo
Selain itu, tag rekam jepret dapat ditambahkan ke file cakupan menggunakan opsi tag sebagai berikut:
dotnet-coverage snapshot --tag-name after_first_test --tag-identifier after_first_test serverdemo
Akhirnya, sesi serverdemo
dan server dapat ditutup sebagai berikut:
dotnet-coverage shutdown serverdemo
Berikut ini adalah contoh output lengkap di sisi server:
D:\serverexample\server> dotnet-coverage collect --session-id serverdemo "dotnet run"
SessionId: serverdemo
Waiting for a connection... Connected!
Received: Hello!
Sent: HELLO!
Waiting for a connection... Code coverage results: output.coverage.
D:\serverexample\server>
Mode server dan klien
Pengumpulan cakupan kode juga dapat dilakukan dalam mode klien server. Dalam skenario ini, server pengumpulan cakupan kode dimulai, dan beberapa klien dapat terhubung dengan server. Cakupan kode dikumpulkan untuk semua klien secara kolektif.
Mulai server cakupan kode menggunakan perintah berikut:
dotnet-coverage collect --session-id serverdemo --server-mode
Dalam contoh ini, ID sesi ditentukan sebagai serverdemo
untuk server. Klien dapat tersambung ke server menggunakan ID sesi ini menggunakan perintah berikut:
dotnet-coverage connect serverdemo dotnet run
Terakhir, Anda dapat menutup sesi serverdemo
dan server menggunakan perintah berikut:
dotnet-coverage shutdown serverdemo
Proses server membuat laporan cakupan kode kolektif untuk semua klien dan keluar.
Berikut ini adalah contoh output lengkap di sisi server:
D:\serverexample\server> dotnet-coverage collect --session-id serverdemo --server-mode
SessionId: serverdemo
// Server will be in idle state and wait for connect and shutdown commands
Code coverage results: output.coverage.
D:\serverexample\server>
Berikut ini adalah contoh output lengkap di sisi klien:
D:\serverexample\server> dotnet-coverage connect serverdemo ConsoleApplication.exe World
Hello World!!
D:\serverexample\server> dotnet-coverage connect serverdemo WpfApplication.exe
D:\serverexample\server> dotnet-coverage shutdown serverdemo
D:\serverexample\server>
Anda juga dapat memulai server dan klien dalam mode latar belakang. Proses lain dimulai di latar belakang dan mengembalikan kontrol kembali kepada pengguna.
Berikut ini adalah contoh output lengkap dalam mode klien server latar belakang:
D:\serverexample\server> dotnet-coverage collect --session-id serverdemo --server-mode --background
D:\serverexample\server> dotnet-coverage connect --background serverdemo ConsoleApplication.exe World
D:\serverexample\server> dotnet-coverage connect --background serverdemo WpfApplication.exe
D:\serverexample\server> dotnet-coverage shutdown serverdemo
D:\serverexample\server>
Cakupan kode statis untuk rakitan terkelola
Alat cakupan dotnet dapat digunakan untuk mengumpulkan cakupan kode untuk rakitan terkelola menggunakan instrumentasi statis. Ada tiga metode berbeda yang tersedia yang dapat Anda gunakan. Untuk menunjukkan, mari kita asumsikan kita memiliki aplikasi konsol C# sederhana:
D:\examples\ConsoleApp> dotnet run
Hello, World!
Gunakan perintah kumpulkan dengan opsi atau konfigurasi sertakan file
Jika Anda tidak ingin menggunakan instrument
perintah , maka file yang akan diinstrumentasikan dapat ditentukan menggunakan --include-files
opsi sebagai berikut:
D:\examples\ConsoleApp> dotnet-coverage collect --include-files .\bin\Debug\net7.0\*.dll dotnet run
Microsoft (R) Code Coverage Command Line Tool (x64)
Copyright (c) Microsoft Corporation. All rights reserved.
SessionId: 57862ec0-e512-49a5-8b66-2804174680fc
Hello, World!
Code coverage results: output.coverage.
Anda juga dapat menentukan file yang akan diinstrumentasikan menggunakan konfigurasi sebagai berikut:
<ModulePaths>
<IncludeDirectories>
<Directory>D:\examples\ConsoleApp\bin\Debug\net7.0</Directory>
</IncludeDirectories>
</ModulePaths>
Menggunakan instrumen dan mengumpulkan perintah
Dalam hal ini, biner pertama perlu diinstrumentasikan sebagai berikut:
D:\examples\ConsoleApp> dotnet-coverage instrument .\bin\Debug\net7.0\ConsoleApp.dll
Microsoft (R) Code Coverage Command Line Tool (x64)
Copyright (c) Microsoft Corporation. All rights reserved.
Input file successfully instrumented.
Kemudian Anda dapat mengumpulkan cakupan kode sebagai berikut:
D:\examples\ConsoleApp> dotnet-coverage collect .\bin\Debug\net7.0\ConsoleApp.exe
Microsoft (R) Code Coverage Command Line Tool (x64)
Copyright (c) Microsoft Corporation. All rights reserved.
SessionId: a09e6bef-ff64-4b5f-8bb8-fc495ebb50ba
Hello, World!
Code coverage results: output.coverage.
Gunakan instrumen dan kumpulkan perintah dalam mode server
Dalam hal ini, Anda dapat sepenuhnya memisahkan koleksi cakupan dari menjalankan aplikasi Anda. Pertama, instrumen biner Anda sebagai berikut:
D:\examples\ConsoleApp> dotnet-coverage instrument --session-id 73c34ce5-501c-4369-a4cb-04d31427d1a4 .\bin\Debug\net7.0\ConsoleApp.dll
Microsoft (R) Code Coverage Command Line Tool (x64)
Copyright (c) Microsoft Corporation. All rights reserved.
Input file successfully instrumented.
Catatan
ID Sesi perlu digunakan dalam skenario ini untuk memastikan bahwa aplikasi dapat terhubung dan menyediakan data ke pengumpul eksternal.
Pada langkah kedua, Anda perlu memulai pengumpul cakupan sebagai berikut:
D:\examples\ConsoleApp> dotnet-coverage collect --session-id 73c34ce5-501c-4369-a4cb-04d31427d1a4 --server-mode
Microsoft (R) Code Coverage Command Line Tool (x64)
Copyright (c) Microsoft Corporation. All rights reserved.
SessionId: 73c34ce5-501c-4369-a4cb-04d31427d1a4
Kemudian aplikasi dapat dimulai sebagai berikut:
D:\examples\ConsoleApp> .\bin\Debug\net7.0\ConsoleApp.exe
Hello, World!
Akhirnya, kolektor dapat ditutup sebagai berikut:
D:\examples\ConsoleApp> dotnet-coverage shutdown 73c34ce5-501c-4369-a4cb-04d31427d1a4
Microsoft (R) Code Coverage Command Line Tool (x64)
Copyright (c) Microsoft Corporation. All rights reserved.
Pengaturan
Anda dapat menentukan file dengan pengaturan saat menggunakan perintah collect
. File pengaturan dapat digunakan untuk mengecualikan beberapa modul atau metode dari analisis cakupan kode. Formatnya sama dengan konfigurasi pengumpul data di dalam file runsettings. Untuk informasi selengkapnya, lihat Menyesuaikan analisis cakupan kode. Berikut contohnya:
<?xml version="1.0" encoding="utf-8"?>
<Configuration>
<CodeCoverage>
<!--
Additional paths to search for .pdb (symbol) files. Symbols must be found for modules to be instrumented.
If .pdb files are in the same folder as the .dll or .exe files, they are automatically found. Otherwise, specify them here.
Note that searching for symbols increases code coverage run time. So keep this small and local.
-->
<SymbolSearchPaths>
<Path>C:\Users\User\Documents\Visual Studio 2012\Projects\ProjectX\bin\Debug</Path>
<Path>\\mybuildshare\builds\ProjectX</Path>
</SymbolSearchPaths>
<!--
About include/exclude lists:
Empty "Include" clauses imply all; empty "Exclude" clauses imply none.
Each element in the list is a regular expression (ECMAScript syntax). See /visualstudio/ide/using-regular-expressions-in-visual-studio.
An item must first match at least one entry in the include list to be included.
Included items must then not match any entries in the exclude list to remain included.
-->
<!-- Match assembly file paths: -->
<ModulePaths>
<Include>
<ModulePath>.*\.dll$</ModulePath>
<ModulePath>.*\.exe$</ModulePath>
</Include>
<Exclude>
<ModulePath>.*CPPUnitTestFramework.*</ModulePath>
</Exclude>
<!-- Additional directories from .NET assemblies should be statically instrumented: -->
<IncludeDirectories>
<Directory Recursive="true">C:\temp</Directory>
</IncludeDirectories>
</ModulePaths>
<!-- Match fully qualified names of functions: -->
<!-- (Use "\." to delimit namespaces in C# or Visual Basic, "::" in C++.) -->
<Functions>
<Exclude>
<Function>^Fabrikam\.UnitTest\..*</Function>
<Function>^std::.*</Function>
<Function>^ATL::.*</Function>
<Function>.*::__GetTestMethodInfo.*</Function>
<Function>^Microsoft::VisualStudio::CppCodeCoverageFramework::.*</Function>
<Function>^Microsoft::VisualStudio::CppUnitTestFramework::.*</Function>
</Exclude>
</Functions>
<!-- Match attributes on any code element: -->
<Attributes>
<Exclude>
<!-- Don't forget "Attribute" at the end of the name -->
<Attribute>^System\.Diagnostics\.DebuggerHiddenAttribute$</Attribute>
<Attribute>^System\.Diagnostics\.DebuggerNonUserCodeAttribute$</Attribute>
<Attribute>^System\.CodeDom\.Compiler\.GeneratedCodeAttribute$</Attribute>
<Attribute>^System\.Diagnostics\.CodeAnalysis\.ExcludeFromCodeCoverageAttribute$</Attribute>
</Exclude>
</Attributes>
<!-- Match the path of the source files in which each method is defined: -->
<Sources>
<Exclude>
<Source>.*\\atlmfc\\.*</Source>
<Source>.*\\vctools\\.*</Source>
<Source>.*\\public\\sdk\\.*</Source>
<Source>.*\\microsoft sdks\\.*</Source>
<Source>.*\\vc\\include\\.*</Source>
</Exclude>
</Sources>
<!-- Match the company name property in the assembly: -->
<CompanyNames>
<Exclude>
<CompanyName>.*microsoft.*</CompanyName>
</Exclude>
</CompanyNames>
<!-- Match the public key token of a signed assembly: -->
<PublicKeyTokens>
<!-- Exclude Visual Studio extensions: -->
<Exclude>
<PublicKeyToken>^B77A5C561934E089$</PublicKeyToken>
<PublicKeyToken>^B03F5F7F11D50A3A$</PublicKeyToken>
<PublicKeyToken>^31BF3856AD364E35$</PublicKeyToken>
<PublicKeyToken>^89845DCD8080CC91$</PublicKeyToken>
<PublicKeyToken>^71E9BCE111E9429C$</PublicKeyToken>
<PublicKeyToken>^8F50407C4E9E73B6$</PublicKeyToken>
<PublicKeyToken>^E361AF139669C375$</PublicKeyToken>
</Exclude>
</PublicKeyTokens>
<EnableStaticManagedInstrumentation>True</EnableStaticManagedInstrumentation>
<EnableDynamicManagedInstrumentation>True</EnableDynamicManagedInstrumentation>
</CodeCoverage>
</Configuration>
Menggabungkan laporan cakupan kode
Anda dapat menggabungkan a.coverage
dan b.coverage
serta menyimpan data di merged.coverage
sebagai berikut:
dotnet-coverage merge -o merged.coverage a.coverage b.coverage
Misalnya, jika Anda menjalankan perintah seperti dotnet test --collect "Code Coverage"
, laporan cakupan disimpan ke dalam folder yang diberi nama GUID acak. Folder seperti itu sulit ditemukan dan digabungkan. Dengan menggunakan alat ini, Anda dapat menggabungkan semua laporan cakupan kode untuk semua proyek Anda menggunakan pola globbing sebagai berikut:
dotnet-coverage merge -o merged.cobertura.xml -f cobertura **\*.coverage
Perintah sebelumnya menggabungkan semua laporan cakupan dari direktori saat ini dan semua subdirektori dan menyimpan hasilnya ke dalam file cobertura. Di Azure Pipelines, Anda dapat menggunakan tugas Terbitkan Hasil Cakupan Kode untuk menerbitkan laporan cobertura yang digabungkan.
Anda dapat menggunakan perintah merge
untuk mengonversi laporan cakupan kode ke format lain. Misalnya, perintah berikut mengonversi laporan cakupan kode biner menjadi format XML.
dotnet-coverage merge -o output.xml -f xml input.coverage