Share via


dotnet-coverage kod kapsamı yardımcı programı

Bu makale şunlar için geçerlidir: ✔️ .NET Core 3.1 SDK ve sonraki sürümler

Özet

dotnet-coverage [-h, --help] [--version] <command>

Açıklama

Araç dotnet-coverage :

  • Çalışan bir işlemin kod kapsamı verilerinin platformlar arası toplanmasını sağlar.
  • Kod kapsamı raporlarının platformlar arası birleştirilmesini sağlar.

Seçenekler

  • -h|--help

    Komut satırı yardımlarını gösterir.

  • --version

    dotnet-coverage yardımcı programının sürümünü görüntüler.

Yükleme

NuGet paketinin en son sürüm sürümünü dotnet-coverageyüklemek için dotnet tool install komutunu kullanın:

dotnet tool install --global dotnet-coverage

Komutlar

Command
dotnet-coverage merge
dotnet-coverage collect
dotnet-coverage connect
dotnet-coverage anlık görüntüsü
dotnet-coverage shutdown
dotnet-coverage instrument

dotnet-coverage merge

merge Komutu, birkaç kod kapsamı raporunu tek bir kod kapsamı raporuyla birleştirmek için kullanılır. Bu komut tüm platformlarda kullanılabilir. Bu komut aşağıdaki kod kapsamı rapor biçimlerini destekler:

  • coverage
  • cobertura
  • xml

Özet

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>

Bağımsız değişkenler

  • <files>

    Giriş kodu kapsamı raporları.

Seçenekler

  • --remove-input-files

    Birleştirilmiş tüm giriş kapsamı raporlarını kaldırır.

  • -r, --recursive

    .NET 7 SDK ve önceki sürümler Yalnızca alt dizinlerdeki kapsam raporlarını arayın.

  • -o|--output <output>

    Kod kapsamı raporu çıkış dosyasını ayarlar.

  • -f|--output-format <output-format>

    Çıkış dosyası biçimi. Desteklenen değerler: coverage, xmlve cobertura. Varsayılan değerdir coverage (Visual Studio'da açılabilir ikili biçim).

  • -l|--log-file <log-file>

    Günlük dosyası yolunu ayarlar. Bir dizin sağladığınızda (sonunda bir yol ayırıcı ile), analiz altındaki her işlem için yeni bir günlük dosyası oluşturulur.

  • -ll|--log-level <log-level>

    Günlük düzeyini ayarlar. Desteklenen değerler: Error, Infove Verbose.

dotnet-coverage collect

komutu collect , herhangi bir .NET işlemi ve alt işlemleri için kod kapsamı verilerini toplamak için kullanılır. Örneğin, bir konsol uygulaması veya Blazor uygulaması için kod kapsamı verileri toplayabilirsiniz. Bu komut dinamik ve statik izlemeyi destekler. Statik izleme tüm platformlarda kullanılabilir. Seçeneği kullanarak include-files statik olarak izlenecek dosyaları belirtebilirsiniz. Dinamik izleme Windows (x86, x64 ve Arm64), Linux (x64) ve macOS (x64) üzerinde kullanılabilir. komutu yalnızca .NET modüllerini destekler. Yerel modüller desteklenmez.

Özet

Komut collect iki modda çalıştırılabilir.

Komut Modu

komutu, collect bağımsız değişkeni tarafından command yürütülen belirli bir işlem için kod kapsamı toplar.

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>

Sunucu Modu

komutu, collect kod kapsamı koleksiyonu için bir sunucu barındırıyor. İstemciler, komut aracılığıyla connect sunucuya bağlanabilir.

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]

Bağımsız değişkenler

  • <command>

    Kod kapsamı verilerinin toplandığı komut.

  • <args>

    Komutun komut satırı bağımsız değişkenleri.

Seçenekler

  • -s|--settings <settings>

    XML kod kapsamı ayarlarının yolunu ayarlar.

  • -id|--session-id <session-id>

    Kod kapsamı oturum kimliğini belirtir. Sağlanmazsa, araç rastgele bir GUID oluşturur.

  • -sv|--server-mode

    Toplayıcıyı sunucu modunda başlatır. İstemciler komutuyla sunucuya connect bağlanabilir.

  • -b|--background

    Kod kapsamı toplama sunucusunu yeni bir arka plan işleminde başlatır. İstemciler komutuyla sunucuya connect bağlanabilir.

  • -t|--timeout

    İstemciler ve sunucu arasındaki işlemler arası iletişim için zaman aşımı (milisaniye cinsinden).

  • -if|--include-files <include-files>

    Statik olarak izlenecek dosyaların listesini belirtir.

  • -o|--output <output>

    Kod kapsamı raporu çıkış dosyasını ayarlar.

  • -f|--output-format <output-format>

    Çıkış dosyası biçimi. Desteklenen değerler: coverage, xmlve cobertura. Varsayılan değerdir coverage (Visual Studio'da açılabilir ikili biçim).

  • -l|--log-file <log-file>

    Günlük dosyası yolunu ayarlar. Bir dizin sağladığınızda (sonunda bir yol ayırıcı ile), analiz altındaki her işlem için yeni bir günlük dosyası oluşturulur.

  • -ll|--log-level <log-level>

    Günlük düzeyini ayarlar. Desteklenen değerler: Error, Infove Verbose.

dotnet-coverage connect

komutu connect mevcut sunucuya bağlanmak için kullanılır ve tüm .NET işlemleri ve alt işlemleri için kod kapsamı verilerini toplar. Örneğin, bir konsol uygulaması veya Blazor uygulaması için kod kapsamı verileri toplayabilirsiniz. komutu yalnızca .NET modüllerini destekler. Yerel modüller desteklenmez.

Not

Komut, Windows (x86, x64 ve Arm64), Linux (x64) ve macOS (x64) üzerinde kullanılabilen tüm alt işlemler için dinamik izleme kullanır. Herhangi bir .NET modülünü statik olarak izlemeniz gerekiyorsa, komutu yürütmeden connect önce komutunu (ilgili oturum kimliği seçeneğiyle birlikte) kullanıninstrument.

Özet

dotnet-coverage connect
    [-b|--background] [-t|--timeout]
    [-l|--log-file <log-file>] [-ll|--log-level <log-level>] [-?|-h|--help]
    <session>
    <command> <args>

Bağımsız değişkenler

  • <session>

    komutu tarafından barındırılan sunucunun collect oturum kimliği.

  • <command>

    Kod kapsamı verilerinin toplandığı komut.

  • <args>

    Komutun komut satırı bağımsız değişkenleri.

Seçenekler

  • -b|--background

    İstemciyi yeni bir arka plan işleminde başlatır.

  • -t|--timeout

    İstemci ile sunucu arasındaki işlemler arası iletişim için zaman aşımı (milisaniye cinsinden).* -l|--log-file <log-file>

  • -l|--log-file <log-file>

    Günlük dosyası yolunu ayarlar. Bir dizin sağladığınızda (sonunda bir yol ayırıcı ile), analiz altındaki her işlem için yeni bir günlük dosyası oluşturulur.

  • -ll|--log-level <log-level>

    Günlük düzeyini ayarlar. Desteklenen değerler: Error, Infove Verbose.

dotnet-coverage anlık görüntüsü

Mevcut kod kapsamı koleksiyonu için bir kapsam dosyası oluşturur.

Özet

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>

Bağımsız değişkenler

  • <session>

    Kapsam dosyasının oluşturulacağı koleksiyonun oturum kimliği.

Seçenekler

  • -r|--reset <reset>

    Bir kapsam dosyası oluşturulduktan sonra mevcut kapsam bilgilerini temizler.

  • -o|--output <output>

    Kod kapsamı raporu çıkış dosyasını ayarlar. Sağlanmazsa, zaman damgasıyla otomatik olarak oluşturulur.

  • -tn|--tag-name <tag-name>

    Geçerli kapsam bilgileriyle kapsam dosyasında bir anlık görüntü etiketi adı oluşturur. Etiket adı ve etiket tanımlayıcısı birbirini kapsar.

  • -tid|--tag-identifier <tag-identifier>

    Geçerli kapsam bilgileriyle kapsam dosyasında bir anlık görüntü etiketi tanımlayıcısı oluşturur. Etiket adı ve etiket tanımlayıcısı birbirini kapsar.

  • -t|--timeout

    İstemci ile sunucu arasındaki işlemler arası iletişim için zaman aşımı (milisaniye cinsinden).

  • -l|--log-file <log-file>

    Günlük dosyası yolunu ayarlar. Bir dizin sağladığınızda (sonunda bir yol ayırıcı ile), analiz altındaki her işlem için yeni bir günlük dosyası oluşturulur.

  • -ll|--log-level <log-level>

    Günlük düzeyini ayarlar. Desteklenen değerler: Error, Infove Verbose.

dotnet-coverage shutdown

Mevcut kod kapsamı koleksiyonunu kapatır.

Özet

dotnet-coverage shutdown
    [-t|--timeout]
    [-l|--log-file <log-file>] [-ll|--log-level <log-level>] [-?|-h|--help]
    <session>

Bağımsız değişkenler

  • <session>

    Kapatılacak koleksiyonun oturum kimliği.

Seçenekler

  • -t|--timeout

    Sunucuyla işlemler arası iletişim için zaman aşımı (milisaniye cinsinden).

  • -l|--log-file <log-file>

    Günlük dosyası yolunu ayarlar. Bir dizin sağladığınızda (sonunda bir yol ayırıcı ile), analiz altındaki her işlem için yeni bir günlük dosyası oluşturulur.

  • -ll|--log-level <log-level>

    Günlük düzeyini ayarlar. Desteklenen değerler: Error, Infove Verbose.

dotnet-coverage instrument

İzleme komutu diskte ikiliyi işaretlemek için kullanılır.

Özet

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>

Bağımsız değişkenler

  • <input-file>

    Giriş ikili dosyası.

Seçenekler

  • -s|--settings <settings>

    XML kod kapsamı ayarlarının yolunu ayarlar.

  • -id|--session-id <session-id>

    Kod kapsamı oturum kimliğini belirtir. Sağlanmazsa, araç rastgele bir GUID oluşturur.

  • -o|--output <output>

    Çıkış dosyası ikili dosyasının yolunu ayarlar. Sağlanmazsa izleme yerinde gerçekleştirilir.

  • -l|--log-file <log-file>

    Günlük dosyası yolunu ayarlar. Bir dizin sağladığınızda (sonunda bir yol ayırıcı ile), analiz altındaki her işlem için yeni bir günlük dosyası oluşturulur.

  • -ll|--log-level <log-level>

    Günlük düzeyini ayarlar. Desteklenen değerler: Error, Infove Verbose.

Örnek senaryolar

Kod kapsamı toplama

Aşağıdaki komutu kullanarak herhangi bir .NET uygulaması (konsol veya Blazor gibi) için kod kapsamı verilerini toplayın:

dotnet-coverage collect dotnet run

Sonlandırmak için sinyal gerektiren bir uygulama söz konusu olduğunda, kod kapsamı verilerini toplamanıza izin veren Ctrl+C'yi kullanabilirsiniz. Bağımsız değişken için, sonunda bir .NET uygulaması başlatacak herhangi bir komut sağlayabilirsiniz. Örneğin, bir PowerShell betiği olabilir.

Oturumlar

Yalnızca iletileri bekleyen ve yanıt gönderen bir .NET sunucusunda kod kapsamı analizi çalıştırırken, son kod kapsamı sonuçlarını almak için sunucuyu durdurmanın bir yolu gerekir. Ctrl+C'yi yerel olarak kullanabilirsiniz ancak Azure Pipelines'da kullanamazsınız. Bu senaryolar için oturumları kullanabilirsiniz. Koleksiyonu başlatırken bir oturum kimliği belirtebilir ve ardından komutunu kullanarak koleksiyonu ve sunucuyu durdurabilirsiniz shutdown .

Örneğin, D:\serverexample\server dizininde bir sunucunuz ve D:\serverexample\tests dizininde bir test projeniz olduğunu varsayalım. Testler ağ üzerinden sunucuyla iletişim kuruyor. Sunucu için kod kapsamı toplama işlemini aşağıdaki gibi başlatabilirsiniz:

D:\serverexample\server> dotnet-coverage collect --session-id serverdemo "dotnet run"

Oturum Kimliği olarak serverdemobelirtildi. Ardından testleri aşağıdaki gibi çalıştırabilirsiniz:

D:\serverexample\tests> dotnet test

Oturum serverdemo için bir kod kapsamı dosyası aşağıdaki gibi geçerli kapsamla oluşturulabilir:

dotnet-coverage snapshot --output after_first_test.coverage serverdemo

Ayrıca, aşağıdaki etiket seçenekleri kullanılarak kapsam dosyasına bir anlık görüntü etiketi eklenebilir:

dotnet-coverage snapshot --tag-name after_first_test --tag-identifier after_first_test serverdemo

Son olarak oturum serverdemo ve sunucu aşağıdaki gibi kapatılabilir:

dotnet-coverage shutdown serverdemo

Sunucu tarafında tam çıktı örneği aşağıda verilmiştir:

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>

Sunucu ve istemci modu

Kod kapsamı toplama işlemi sunucu-istemci modunda da yapılabilir. Bu senaryoda, bir kod kapsamı toplama sunucusu başlatılır ve birden çok istemci sunucuya bağlanabilir. Kod kapsamı, tüm istemciler için toplu olarak toplanır.

Aşağıdaki komutu kullanarak kod kapsamı sunucusunu başlatın:

dotnet-coverage collect --session-id serverdemo --server-mode

Bu örnekte, oturum kimliği sunucu için olarak serverdemo belirtildi. İstemci, aşağıdaki komutu kullanarak bu oturum kimliğini kullanarak sunucuya bağlanabilir:

dotnet-coverage connect serverdemo dotnet run

Son olarak, aşağıdaki komutu kullanarak oturumu serverdemo ve sunucuyu kapatabilirsiniz:

dotnet-coverage shutdown serverdemo

Sunucu işlemi, tüm istemciler ve çıkışlar için toplu bir kod kapsamı raporu oluşturur.

Sunucu tarafında tam çıktı örneği aşağıda verilmiştir:

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>

aşağıda, istemci tarafında tam çıktı örneği verilmiştir:

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>

Ayrıca hem sunucuyu hem de istemciyi arka plan modunda başlatabilirsiniz. Başka bir işlem arka planda başlar ve denetimi kullanıcıya geri döndürür.

Arka plan sunucusu istemci modunda tam çıktı örneği aşağıda verilmiştir:

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>

Yönetilen derlemeler için statik kod kapsamı

dotnet-coverage aracı, statik izleme kullanarak yönetilen derlemeler için kod kapsamını toplamak için kullanılabilir. Kullanabileceğiniz üç farklı yöntem vardır. Göstermek için basit bir C# konsol uygulamamız olduğunu varsayalım:

D:\examples\ConsoleApp> dotnet run
Hello, World!

Dosyaları ekle seçeneği veya yapılandırmasıyla collect komutunu kullanma

komutunu kullanmak instrument istemiyorsanız, izlenecek dosyalar aşağıdaki seçenek kullanılarak --include-files belirtilebilir:

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.

Yapılandırma kullanılarak izlenecek dosyaları da aşağıdaki gibi belirtebilirsiniz:

<ModulePaths>
  <IncludeDirectories>
    <Directory>D:\examples\ConsoleApp\bin\Debug\net7.0</Directory>
  </IncludeDirectories>
</ModulePaths>

İzleme ve toplama komutlarını kullanma

Bu durumda, ilk ikili dosya aşağıdaki gibi izlenmelidir:

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.

Ardından kod kapsamını aşağıdaki gibi toplayabilirsiniz:

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.

Aracı kullanma ve sunucu modunda komut toplama

Bu durumda, kapsam koleksiyonunu uygulamanızı çalıştırmaktan tamamen ayırabilirsiniz. İlk olarak, ikili dosyanızı aşağıdaki gibi izleyin:

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.

Not

Uygulamanın dış toplayıcıya bağlanıp veri sağlayabilmesi için bu senaryoda oturum kimliğinin kullanılması gerekir.

İkinci adımda, kapsam toplayıcısını aşağıdaki gibi başlatmanız gerekir:

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

Ardından uygulama şu şekilde başlatılabilir:

D:\examples\ConsoleApp> .\bin\Debug\net7.0\ConsoleApp.exe
Hello, World!

Son olarak, toplayıcı aşağıdaki gibi kapatılabilir:

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.

Ayarlar

komutunu kullanırken collect ayarları içeren bir dosya belirtebilirsiniz. Ayarlar dosyası, bazı modülleri veya yöntemleri kod kapsamı analizinin dışında tutmak için kullanılabilir. Biçim, runsettings dosyasının içindeki veri toplayıcı yapılandırmasıyla aynıdır. Daha fazla bilgi için bkz . Kod kapsamı analizini özelleştirme. Bir örnek aşağıda verilmiştir:

<?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>

Kod kapsamı raporlarını birleştirme

Verileri merged.coverage aşağıdaki gibi birleştirip a.coverageb.coverage depolayabilirsiniz:

dotnet-coverage merge -o merged.coverage a.coverage b.coverage

Örneğin, gibi dotnet test --collect "Code Coverage"bir komut çalıştırırsanız kapsam raporu rastgele GUID adlı bir klasörde depolanır. Bu tür klasörleri bulmak ve birleştirmek zordur. Bu aracı kullanarak, aşağıdaki gibi genelleme desenlerini kullanarak tüm projeleriniz için tüm kod kapsamı raporlarını birleştirebilirsiniz:

dotnet-coverage merge -o merged.cobertura.xml -f cobertura **\*.coverage

Yukarıdaki komut geçerli dizindeki tüm kapsam raporlarını ve tüm alt dizinleri birleştirir ve sonucu bir cobertura dosyasında depolar. Azure Pipelines'da kod kapsamı sonuçlarını yayımla görevini kullanarak birleştirilmiş bir cobertura raporu yayımlayabilirsiniz.

Bir kod kapsamı raporunu başka bir biçime dönüştürmek için komutunu kullanabilirsiniz merge . Örneğin, aşağıdaki komut ikili kod kapsamı raporunu XML biçimine dönüştürür.

dotnet-coverage merge -o output.xml -f xml input.coverage

Ayrıca bkz.