Bagikan melalui


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, dan cobertura. Defaultnya adalah coverage (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, dan Verbose.

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, dan cobertura. Defaultnya adalah coverage (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, dan Verbose.

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, dan Verbose.

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, dan Verbose.

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, dan Verbose.

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, dan Verbose.

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

Lihat juga