Dela via


Microsoft.CodeCoverage.Console-verktyget

Microsoft.CodeCoverage.Console är ett kommandoradsverktyg som du kan använda för att samla in kodtäckning för C++ och C#-kod. Den stöder också sammanslagning och konvertering av kodtäckningsrapporter. Det här verktyget kan användas för att samla in kodtäckning i scenarier som inte är test (till exempel för ett enkelt konsolprogram).

Det här verktyget är ett tillägg till dotnet-täckning dotnet-verktyg som lägger till stöd för följande scenarier:

  • Lägger till säkerhetsfunktioner för att aktivera insamling av ASP.NET kodtäckningsdata från IIS.
  • Samla in kodtäckningsdata för C++-kod.

Obs!

Verktyget är endast tillgängligt med Visual Studio Enterprise. För .NET-kodtäckning kan du också använda kommandoradsverktyget dotnet-coverage.

Microsoft.CodeCoverage.Console finns i Visual Studio 2022 17.3 under mappen Common7\IDE\Extensions\Microsoft\CodeCoverage.Console. Du kan använda den i en utvecklarkommandotolk och en utvecklar-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.

Kommandona Samla, Anslut, Stäng av, Sammanfoga, Ögonblicksbild och Avinstrumentera

Verktyget Microsoft.CodeCoverage.Console är ett tillägg till dotnet-coverage dotnet-verktyget. Dokumentationen för kommandona collect, connect, shutdown, merge, snapshot och uninstrument finns här.

Microsoft.CodeCoverage.Console stöder ytterligare säkerhetsfunktioner för att samla in ASP.NET kodtäckningsdata från IIS. Dessutom stöder verktyget Microsoft.CodeCoverage.Console insamling av kodtäckning för C++-kod. Kommandot instrument är specifikt för dessa scenarier.

Instrumentkommando

Instrumentkommandot används för att instrumentera inbyggda eller hanterade binärfiler på disken.

Sammanfattning

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]

Argument

  • <input-file>

    Indatabinär.

Alternativ

  • -s|--settings <settings>

    Anger sökvägen till inställningarna för XML-kodtäckning. Inställningsfilen kan användas för att undanta vissa moduler eller metoder från kodtäckningsanalys. Formatet är samma som datainsamlarkonfigurationen i en .runsettings-fil. Mer information finns i Anpassa kodtäckningsanalys.

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

    Anger sessions-ID för kodtäckning. Om det inte anges genererar verktyget ett slumpmässigt GUID.

  • -o|--output <output>

    Anger sökvägen till den binära utdatafilen. Om det inte tillhandahålls, utförs instrumenteringen på plats.

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

    Anger loggfilens sökväg. När du anger en katalog (med en sökvägsavgränsare i slutet) genereras en ny loggfil för varje process som analyseras.

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

    Anger loggnivån. Värden som stöds: Error, Infooch Verbose.

  • -dco|--disable-console-output

    Inaktiverar konsolutdata.

  • --nologo

    Visa inte kodtäckningsbanderollen.

Statisk kodtäckning för C++-kod

Verktyget Microsoft.CodeCoverage.Console kan användas för att samla in kodtäckning för C++ med hjälp av statisk instrumentering. Det finns tre olika metoder som du kan använda. För att demonstrera antar vi att vi har ett enkelt C++-konsolprogram (länkat med alternativet /PROFILE):

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

Kodtäckning med collect-kommandot och en konfigurationsfil (C++)

Om du inte vill använda kommandot instrument kan du i stället använda en konfigurationsfil för att ange vilka filer som ska instrumenteras enligt följande:

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

Samla sedan in kodtäckning på följande sätt:

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.

Inställningsfilen kan användas för att undanta vissa moduler eller metoder från kodtäckningsanalys. Formatet är samma som datainsamlarkonfigurationen i en .runsettings-fil. Mer information finns i Anpassa kodtäckningsanalys.

Kodtäckning med hjälp av instrumenterings- och insamlingskommandon (C++)

Innan du samlar in kodtäckningsdata måste du först instrumentera binärfilen enligt följande:

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

Samla sedan in kodtäckning på följande sätt:

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

Kodtäckning med hjälp av instrumentkommando och insamlingskommando i serverläge (C++)

Med den här metoden kan du separera kodtäckningssamlingen från att köra ditt program. Instrumentera först binärfilen enligt följande:

D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console instrument --session-id 73c34ce5-501c-4369-a4cb-04d31427d1a4 ConsoleApplication.exe
Input file successfully instrumented.

Obs!

Sessions-ID måste användas i det här scenariot för att säkerställa att programmet kan ansluta och tillhandahålla data till extern insamlare.

I det andra steget måste du starta kodtäckningsinsamlaren på följande sätt:

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

Starta sedan programmet på följande sätt:

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

Obs!

Instrumenterad inhemsk binär innehåller en referens till static_covrun64.dll. Kontrollera att den här filen finns bredvid den instrumenterade binära filen eller katalogen där static_covrun64.dll finns i Path miljövariabeln. Kommandona collect och connect lägger till rätt kataloger i Path automatiskt.

Stäng slutligen insamlaren på följande sätt:

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