Delen via


Microsoft-hulpprogramma CodeCoverage.Console

Microsoft.CodeCoverage.Console is een opdrachtregelprogramma dat u kunt gebruiken om codedekking voor C++ en C#-code te verzamelen. Het biedt ook ondersteuning voor het samenvoegen en converteren van codedekkingsrapporten. Dit hulpprogramma kan worden gebruikt voor het verzamelen van codedekking in niet-testscenario's (bijvoorbeeld voor een eenvoudige consoletoepassing).

Dit hulpprogramma is een uitbreiding van het dotnet-coverage dotnet-hulpprogramma die ondersteuning biedt voor de volgende scenario's:

  • Voegt beveiligingsfuncties toe om het verzamelen van ASP.NET codedekkingsgegevens van IIS mogelijk te maken.
  • Codedekking verzamelen voor C++-code.

Notitie

Het hulpprogramma is alleen beschikbaar voor Visual Studio Enterprise. Voor .NET-codedekking kunt u ook het opdrachtregelprogramma dotnet-coveragegebruiken.

Microsoft.CodeCoverage.Console is beschikbaar in Visual Studio 2022 17.3 onder de map Common7\IDE\Extensions\Microsoft\CodeCoverage.Console. U kunt deze gebruiken in een opdrachtprompt voor ontwikkelaars en een Developer PowerShell:

D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console --help

Description:
  Code coverage tools.

Usage:
  Microsoft.CodeCoverage.Console [command] [options]

Options:
  --version       Show version information
  -?, -h, --help  Show help and usage information

Commands:
  collect <command> <args>            Collect code coverage from inner process and subprocesses.
  connect <session> <command> <args>  Connects to an existing code coverage session and collects code coverage from
                                      inner process and subprocesses.
  merge <files>                       Merge coverage reports
  shutdown <session>                  Close existing code coverage collection.
  snapshot <session>                  Creates coverage file for existing code coverage collection.
  instrument <input-file>             Instruments native and managed binary.
  uninstrument <input-file>           Restore original binary.

Opdrachten verzamelen, verbinden, afsluiten, samenvoegen, momentopnamen en instrumenteren

Het hulpprogramma Microsoft.CodeCoverage.Console is een uitbreiding op het dotnet-coverage dotnet-hulpprogramma. De documentatie voor de opdrachten verzamelen, verbinden, afsluiten, samenvoegen, momentopnamen en un-instrumenteren vindt u hier .

Microsoft.CodeCoverage.Console ondersteunt aanvullende beveiligingsfuncties om het verzamelen van ASP.NET codedekkingsgegevens van IIS mogelijk te maken. Daarnaast biedt het hulpprogramma Microsoft.CodeCoverage.Console ondersteuning voor het verzamelen van codedekking voor C++-code. De opdracht instrument is specifiek voor deze scenario's.

Instrumentopdracht

De instrumentopdracht wordt gebruikt om systeemeigen of beheerde binaire bestanden op schijf te instrumenteren.

Samenvatting

Microsoft.CodeCoverage.Console instrument
    <input-file>
    [-s|--settings <settings>] [-id|--session-id <session-id>]
    [-o|--output <output>]
    [-l|--log-file <log-file>] [-ll|--log-level <log-level>]
    [-dco|--disable-console-output] [--nologo]
    [-?|-h|--help]

Argumenten

  • <input-file>

    Het binaire invoerbestand.

Opties

  • -s|--settings <settings>

    Hiermee stelt u het pad in naar de instellingen voor de XML-codedekking. 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 .runsettings--bestand. Zie Analyse van codedekking aanpassenvoor meer informatie.

  • -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 voor het uitvoerbestand in binaire vorm. 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.

  • -dco|--disable-console-output

    Hiermee schakelt u console-uitvoer uit.

  • --nologo

    Toon geen banner voor code coverage.

Statische codedekking voor C++-code

Het hulpprogramma Microsoft.CodeCoverage.Console kan worden gebruikt om codedekking voor C++ te verzamelen 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 (gekoppeld aan de optie /PROFILE):

D:\ConsoleApplication\x64\Debug> .\ConsoleApplication.exe
Hello World!

Codedekking met behulp van opdracht verzamelen met configuratiebestand (C++)

Als u de opdracht instrument niet wilt gebruiken, kunt u in plaats daarvan een configuratiebestand gebruiken om de te instrumenteren bestanden op te geven, als volgt:

<ModulePaths>
  <IncludeDirectories>
    <Directory>D:\ConsoleApplication\x64\Debug</Directory>
  </IncludeDirectories>
</ModulePaths>

Verzamel vervolgens de codedekking als volgt:

D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console collect --settings coverage.config .\ConsoleApplication.exe
SessionId: 85d9d49e-38a7-43a4-81ff-9e12f0e6b04b
Hello World!
Code coverage results: output.coverage.

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 .runsettings--bestand. Zie Analyse van codedekking aanpassenvoor meer informatie.

Codedekking met behulp van instrument en verzamel opdrachten (C++)

Voordat u codedekkingsgegevens verzamelt, moet u eerst het binaire bestand als volgt instrumenteren:

D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console instrument ConsoleApplication.exe
Input file successfully instrumented.

Verzamel vervolgens de codedekking als volgt:

D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console collect .\ConsoleApplication.exe
SessionId: e85e657f-9ff3-42a0-88d7-2349598a1ecd
Hello World!
Code coverage results: output.coverage.

Codedekking met behulp van instrumentopdracht en verzamel opdracht in servermodus (C++)

Met deze methode kunt u de verzameling codedekking scheiden van het uitvoeren van uw toepassing. Instrumenteer eerst het binaire bestand als volgt:

D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console instrument --session-id 73c34ce5-501c-4369-a4cb-04d31427d1a4 ConsoleApplication.exe
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 collector voor codedekking als volgt starten:

D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console collect --session-id 73c34ce5-501c-4369-a4cb-04d31427d1a4 --server-mode
SessionId: 73c34ce5-501c-4369-a4cb-04d31427d1a4

Start vervolgens de toepassing als volgt:

D:\ConsoleApplication\x64\Debug>.\ConsoleApplication.exe
Hello World!

Notitie

Instrumented native binary bevat een verwijzing naar static_covrun64.dll. Zorg ervoor dat dit bestand zich naast het geïnstrueerde binaire bestand bevindt of dat de map waar static_covrun64.dll zich bevindt, wordt vermeld in de omgevingsvariabele Path. De opdrachten collect en connect voegen automatisch de juiste mappen toe aan Path.

Sluit ten slotte de collector als volgt:

D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console shutdown 73c34ce5-501c-4369-a4cb-04d31427d1a4