Delen via


hulpprogramma voor dekking van dotnet-dekkingscode

Dit artikel is van toepassing op: ✔️ .NET Core 3.1 SDK en latere versies

Samenvatting

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

Beschrijving

Het dotnet-coverage hulpprogramma:

  • Hiermee kunt u de platformoverschrijdende verzameling codedekkingsgegevens van een actief proces inschakelen.
  • Biedt platformoverschrijdende samenvoeging van codedekkingsrapporten.

Opties

  • -h|--help

    Toont opdrachtregelhulp.

  • --version

    Geeft de versie van het hulpprogramma dotnet-dekking weer.

Installeren

Als u de nieuwste versie van het NuGet-pakket wilt installeren, gebruikt u de installatieopdracht van het dotnet-coverage dotnet-hulpprogramma:

dotnet tool install --global dotnet-coverage

Opdracht

Opdracht
samenvoegen van dotnet-dekking
dotnet-coverage collect
dotnet-coverage connect
momentopname van dotnet-dekking
dotnet-dekking afsluiten
dotnet-dekkingsinstrument

samenvoegen van dotnet-dekking

De merge opdracht wordt gebruikt om verschillende codedekkingsrapporten samen te voegen in één rapport. Deze opdracht is beschikbaar op alle platforms. Deze opdracht ondersteunt de volgende indelingen voor codedekkingsrapport:

  • coverage
  • cobertura
  • xml

Samenvatting

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>

Argumenten

  • <files>

    De dekkingsrapporten voor invoercode.

Opties

  • --remove-input-files

    Hiermee verwijdert u alle invoerdekkingsrapporten die zijn samengevoegd.

  • -r, --recursive

    .NET 7 SDK en eerdere versies zoeken alleen naar dekkingsrapporten in submappen.

  • -o|--output <output>

    Hiermee stelt u het uitvoerbestand voor het codedekkingsrapport in.

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

    De indeling van het uitvoerbestand. Ondersteunde waarden: coverage, xmlen cobertura. Standaard is coverage (binaire indeling die kan worden geopend in Visual Studio).

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

    Hiermee stelt u het pad naar het logboekbestand in. Wanneer u een map opgeeft (met een padscheidingsteken aan het einde), wordt er een nieuw logboekbestand gegenereerd voor elk proces dat wordt geanalyseerd.

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

    Hiermee stelt u het logboekniveau in. Ondersteunde waarden: Error, Infoen Verbose.

dotnet-coverage collect

De collect opdracht wordt gebruikt om codedekkingsgegevens te verzamelen voor elk .NET-proces en de bijbehorende subprocessen. U kunt bijvoorbeeld codedekkingsgegevens verzamelen voor een consoletoepassing of een Blazor-toepassing. Deze opdracht ondersteunt dynamische en statische instrumentatie. Statische instrumentatie is beschikbaar op alle platforms. U kunt bestanden opgeven die statisch moeten worden geïnstrueerd met behulp van include-files de optie. Dynamische instrumentatie is beschikbaar in Windows (x86, x64 en Arm64), Linux (x64) en macOS (x64). De opdracht ondersteunt alleen .NET-modules. Systeemeigen modules worden niet ondersteund.

Samenvatting

De collect opdracht kan in twee modi worden uitgevoerd.

Opdrachtmodus

Met collect de opdracht wordt de codedekking verzameld voor het opgegeven proces dat door het command argument wordt uitgevoerd.

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>

Servermodus

De collect opdracht fungeert als host voor een server voor het verzamelen van codedekking. Clients kunnen via de opdracht verbinding maken met de server 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]

Argumenten

  • <command>

    De opdracht waarvoor codedekkingsgegevens moeten worden verzameld.

  • <args>

    De opdrachtregelargumenten voor de opdracht.

Opties

  • -s|--settings <settings>

    Hiermee stelt u het pad in op de instellingen voor de xml-codedekking.

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

    Hiermee geeft u de sessie-id van de codedekking op. Als dit niet is opgegeven, genereert het hulpprogramma een willekeurige GUID.

  • -sv|--server-mode

    Start de collector in de servermodus. Clients kunnen verbinding maken met de server met de connect opdracht.

  • -b|--background

    Start de verzamelingsserver voor codedekking in een nieuw achtergrondproces. Clients kunnen verbinding maken met de server met de connect opdracht.

  • -t|--timeout

    Time-out (in milliseconden) voor communicatie tussen processen tussen clients en de server.

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

    Hiermee geeft u een lijst met bestanden die statisch moeten worden geïnstrueerd.

  • -o|--output <output>

    Hiermee stelt u het uitvoerbestand voor het codedekkingsrapport in.

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

    De indeling van het uitvoerbestand. Ondersteunde waarden: coverage, xmlen cobertura. Standaard is coverage (binaire indeling die kan worden geopend in Visual Studio).

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

    Hiermee stelt u het pad naar het logboekbestand in. Wanneer u een map opgeeft (met een padscheidingsteken aan het einde), wordt er een nieuw logboekbestand gegenereerd voor elk proces dat wordt geanalyseerd.

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

    Hiermee stelt u het logboekniveau in. Ondersteunde waarden: Error, Infoen Verbose.

dotnet-coverage connect

De connect opdracht wordt gebruikt om verbinding te maken met de bestaande server en verzamelt codedekkingsgegevens voor elk .NET-proces en de bijbehorende subprocessen. U kunt bijvoorbeeld codedekkingsgegevens verzamelen voor een consoletoepassing of een Blazor-toepassing. De opdracht ondersteunt alleen .NET-modules. Systeemeigen modules worden niet ondersteund.

Notitie

De opdracht maakt gebruik van dynamische instrumentatie voor alle subprocessen die beschikbaar zijn in Windows (x86, x64 en Arm64), Linux (x64) en macOS (x64). Als u een .NET-module statisch moet instrumenteren, gebruikt instrument u de opdracht (met de bijbehorende sessie-id-optie) voordat u connect de opdracht uitvoert.

Samenvatting

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

Argumenten

  • <session>

    De sessie-id van de server die wordt gehost door de collect opdracht.

  • <command>

    De opdracht waarvoor codedekkingsgegevens moeten worden verzameld.

  • <args>

    De opdrachtregelargumenten voor de opdracht.

Opties

  • -b|--background

    Start de client in een nieuw achtergrondproces.

  • -t|--timeout

    Time-out (in milliseconden) voor communicatie tussen processen tussen de client en de server.* -l|--log-file <log-file>

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

    Hiermee stelt u het pad naar het logboekbestand in. Wanneer u een map opgeeft (met een padscheidingsteken aan het einde), wordt er een nieuw logboekbestand gegenereerd voor elk proces dat wordt geanalyseerd.

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

    Hiermee stelt u het logboekniveau in. Ondersteunde waarden: Error, Infoen Verbose.

momentopname van dotnet-dekking

Hiermee maakt u een dekkingsbestand voor bestaande codedekkingsverzameling.

Samenvatting

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>

Argumenten

  • <session>

    De sessie-id van de verzameling waarvoor een dekkingsbestand moet worden gegenereerd.

Opties

  • -r|--reset <reset>

    Wist bestaande dekkingsgegevens nadat een dekkingsbestand is gemaakt.

  • -o|--output <output>

    Hiermee stelt u het uitvoerbestand voor het codedekkingsrapport in. Als deze niet is opgegeven, wordt deze automatisch gegenereerd met een tijdstempel.

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

    Hiermee maakt u een naam voor de momentopnametag in het dekkingsbestand met de huidige dekkingsgegevens. Tagnaam en tag-id zijn wederzijds inclusief.

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

    Hiermee maakt u een tag-id voor momentopnamen in het dekkingsbestand met actuele dekkingsgegevens. Tagnaam en tag-id zijn wederzijds inclusief.

  • -t|--timeout

    Time-out (in milliseconden) voor communicatie tussen processen tussen de client en de server.

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

    Hiermee stelt u het pad naar het logboekbestand in. Wanneer u een map opgeeft (met een padscheidingsteken aan het einde), wordt er een nieuw logboekbestand gegenereerd voor elk proces dat wordt geanalyseerd.

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

    Hiermee stelt u het logboekniveau in. Ondersteunde waarden: Error, Infoen Verbose.

dotnet-dekking afsluiten

Hiermee sluit u de bestaande verzameling codedekking.

Samenvatting

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

Argumenten

  • <session>

    De sessie-id van de verzameling die moet worden gesloten.

Opties

  • -t|--timeout

    Time-out (in milliseconden) voor communicatie tussen processen met de server.

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

    Hiermee stelt u het pad naar het logboekbestand in. Wanneer u een map opgeeft (met een padscheidingsteken aan het einde), wordt er een nieuw logboekbestand gegenereerd voor elk proces dat wordt geanalyseerd.

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

    Hiermee stelt u het logboekniveau in. Ondersteunde waarden: Error, Infoen Verbose.

dotnet-dekkingsinstrument

De instrumentopdracht wordt gebruikt om binair op schijf te instrumenteren.

Samenvatting

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>

Argumenten

  • <input-file>

    Het binaire invoerbestand.

Opties

  • -s|--settings <settings>

    Hiermee stelt u het pad in op de instellingen voor de xml-codedekking.

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

    Hiermee geeft u de sessie-id van de codedekking op. Als dit niet is opgegeven, genereert het hulpprogramma een willekeurige GUID.

  • -o|--output <output>

    Hiermee stelt u het pad in naar het binaire uitvoerbestand. Indien niet verstrekt, wordt instrumentatie ter plaatse uitgevoerd.

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

    Hiermee stelt u het pad naar het logboekbestand in. Wanneer u een map opgeeft (met een padscheidingsteken aan het einde), wordt er een nieuw logboekbestand gegenereerd voor elk proces dat wordt geanalyseerd.

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

    Hiermee stelt u het logboekniveau in. Ondersteunde waarden: Error, Infoen Verbose.

Voorbeeldscenario's

Codedekking verzamelen

Verzamel codedekkingsgegevens voor een .NET-toepassing (zoals console of Blazor) met behulp van de volgende opdracht:

dotnet-coverage collect dotnet run

In het geval van een toepassing waarvoor een signaal moet worden beëindigd, kunt u Ctrl+C gebruiken, waarmee u nog steeds codedekkingsgegevens kunt verzamelen. Voor het argument kunt u elke opdracht opgeven waarmee uiteindelijk een .NET-app wordt gestart. Het kan bijvoorbeeld een PowerShell-script zijn.

Sessies

Wanneer u codedekkingsanalyse uitvoert op een .NET-server die alleen wacht op berichten en antwoorden verzendt, hebt u een manier nodig om de server te stoppen om de uiteindelijke resultaten van de codedekking te verkrijgen. U kunt Ctrl+C lokaal gebruiken, maar niet in Azure Pipelines. Voor deze scenario's kunt u sessies gebruiken. U kunt een sessie-id opgeven bij het starten van de verzameling en vervolgens de opdracht gebruiken om de shutdown verzameling en de server te stoppen.

Stel dat u een server hebt in de map D:\serverexample\server en een testproject in de map D:\serverexample\tests . Tests communiceren met de server via het netwerk. U kunt de verzameling codedekking voor de server als volgt starten:

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

Sessie-id is opgegeven als serverdemo. Vervolgens kunt u tests als volgt uitvoeren:

D:\serverexample\tests> dotnet test

Er kan als volgt een codedekkingsbestand voor de sessie serverdemo worden gegenereerd met de huidige dekking:

dotnet-coverage snapshot --output after_first_test.coverage serverdemo

Een momentopnametag kan ook als volgt worden toegevoegd aan het dekkingsbestand met behulp van tagopties:

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

Ten slotte kunnen sessie serverdemo en de server als volgt worden gesloten:

dotnet-coverage shutdown serverdemo

Hieronder volgt een voorbeeld van volledige uitvoer aan de serverzijde:

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>

Server- en clientmodus

Codedekkingsverzameling kan ook worden uitgevoerd in de serverclientmodus. In dit scenario wordt een codedekkingsverzamelingsserver gestart en kunnen meerdere clients verbinding maken met de server. Codedekking wordt gezamenlijk verzameld voor alle clients.

Start de codedekkingsserver met behulp van de volgende opdracht:

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

In dit voorbeeld is de sessie-id opgegeven als serverdemo voor de server. Een client kan verbinding maken met de server met behulp van deze sessie-id met behulp van de volgende opdracht:

dotnet-coverage connect serverdemo dotnet run

Ten slotte kunt u de sessie serverdemo en de server sluiten met behulp van de volgende opdracht:

dotnet-coverage shutdown serverdemo

Het serverproces maakt een rapport voor collectieve codedekking voor alle clients en wordt afgesloten.

Hieronder volgt een voorbeeld van volledige uitvoer aan de serverzijde:

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>

Hieronder volgt een voorbeeld van volledige uitvoer aan de clientzijde:

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>

U kunt zowel de server als de client ook starten in de achtergrondmodus. Een ander proces begint op de achtergrond en retourneert het besturingselement terug naar de gebruiker.

Hieronder volgt een voorbeeld van volledige uitvoer in de clientmodus van de achtergrondserver:

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>

Statische codedekking voor beheerde assembly's

Het dotnet-dekkingsprogramma kan worden gebruikt voor het verzamelen van codedekking voor beheerde assembly's met behulp van statische instrumentatie. Er zijn drie verschillende methoden beschikbaar die u kunt gebruiken. We gaan ervan uit dat we een eenvoudige C#-consoletoepassing hebben:

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

De opdracht Collect gebruiken met de optie Bestanden opnemen of configureren

Als u de instrument opdracht niet wilt gebruiken, kunnen de te instrumenteren bestanden als volgt worden opgegeven met behulp van --include-files de optie:

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.

U kunt ook als volgt bestanden opgeven die moeten worden geïnstrueerd met behulp van de configuratie:

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

Instrument gebruiken en opdrachten verzamelen

In dit geval moet het eerste binaire bestand als volgt worden geïnstrueerd:

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.

Vervolgens kunt u de codedekking als volgt verzamelen:

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.

Het instrument gebruiken en opdrachten verzamelen in de servermodus

In dit geval kunt u de dekkingsverzameling volledig scheiden van het uitvoeren van uw toepassing. Instrumenteer eerst uw binaire bestand als volgt:

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.

Notitie

Sessie-id moet in dit scenario worden gebruikt om ervoor te zorgen dat de toepassing verbinding kan maken en gegevens kan leveren aan externe collector.

In de tweede stap moet u de dekkingsverzamelaar als volgt starten:

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

Vervolgens kan de toepassing als volgt worden gestart:

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

Ten slotte kan de collector als volgt worden gesloten:

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.

Instellingen

U kunt een bestand met instellingen opgeven wanneer u de collect opdracht gebruikt. Het instellingenbestand kan worden gebruikt om bepaalde modules of methoden uit te sluiten van codedekkingsanalyse. De indeling is hetzelfde als de configuratie van de gegevensverzamelaar in een runettings-bestand . Zie Analyse van codedekking aanpassen voor meer informatie. Hier volgt een voorbeeld:

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

Codedekkingsrapporten samenvoegen

U kunt de gegevens merged.coverage als volgt samenvoegen a.coverage en b.coverage opslaan:

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

Als u bijvoorbeeld een opdracht als volgt dotnet test --collect "Code Coverage"uitvoert, wordt het dekkingsrapport opgeslagen in een map met de naam een willekeurige GUID. Dergelijke mappen zijn moeilijk te vinden en samen te voegen. Met dit hulpprogramma kunt u als volgt alle codedekkingsrapporten voor al uw projecten samenvoegen met behulp van globbing-patronen:

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

Met de voorgaande opdracht worden alle dekkingsrapporten uit de huidige map en alle submappen samengevoegd en wordt het resultaat opgeslagen in een cobertura-bestand. In Azure Pipelines kunt u de taak Codedekkingsresultaten publiceren gebruiken om een samengevoegd cobertura-rapport te publiceren.

U kunt de merge opdracht gebruiken om een codedekkingsrapport te converteren naar een andere indeling. Met de volgende opdracht wordt bijvoorbeeld een rapport voor binaire codedekking geconverteerd naar xml-indeling.

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

Zie ook