Microsoft.CodeCoverage.Console-Tool

Microsoft.CodeCoverage.Console ist ein Befehlszeilentool. Sie können es verwenden, um Code Coverage für C++- und C#-Code zu sammeln. Es unterstützt auch das Zusammenführen und Konvertieren von Code Coverage-Berichten. Dieses Tool kann verwendet werden, um Code Coverage in Nicht-Testszenarien (z. B. für eine einfache Konsolenanwendung) zu sammeln.

Microsoft.CodeCoverage.Console ist in Visual Studio 2022 17.3 unter Ordner Common7\IDE\Extensions\Microsoft\CodeCoverage.Consoleverfügbar. Sie können es in einer Developer-Eingabeaufforderung und einer Developer-PowerShell verwenden:

Hinweis

Das Tool ist nur mit Visual Studio Enterprise verfügbar. Für .NET-Code Coverage können Sie alternativ das Befehlszeilentool dotnet-coverage verwenden.

C:\Program Files\Microsoft Visual Studio\2022\Enterprise> Microsoft.CodeCoverage.Console --help
Description:
  Dynamic code coverage tools.

Usage:
  codecoverage [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 binary.

Befehle zum Erfassen, Verbinden, Herunterfahren, Zusammenführen und Momentaufnahme

Das Microsoft.CodeCoverage.Console-Tool wird auf Dotnet-Tool dotnet-coverage erweitert. Die Dokumentation zu den Befehlen zum Sammeln, Verbinden, Herunterfahren, Zusammenführen und Momentaufnahmen finden Sie hier. Darüber hinaus unterstützt das Microsoft.CodeCoverage.Console-Tool das Sammeln von Code Coverage für C++-Code.

Instrument-Befehl

Der instrument-Befehl wird verwendet, um native oder verwaltete Binärdateien auf dem Datenträger zu instrumentieren.

Übersicht

Microsoft.CodeCoverage.Console 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>

Argumente

  • <input-file>

    Die Eingabebinärdatei.

Optionen

  • -s|--settings <settings>

    Legt den Pfad zu den XML-Code Coverage-Einstellungen fest.

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

    Gibt die Code Coverage-Sitzungs-ID an. Falls keine Angabe vorliegt, generiert das Tool eine zufällige GUID.

  • -o|--output <output>

    Legt den Pfad zur Ausgabedateibinärdatei fest. Andernfalls wird eine direkte Instrumentierung durchgeführt.

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

    Legt den Protokolldateipfad fest. Wenn Sie ein Verzeichnis (mit einem Pfadtrennzeichen am Ende) angeben, wird für jeden analysierten Prozess eine neue Protokolldatei generiert.

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

    Legt die Protokollierungsebene fest. Unterstützte Werte: Error, Info und Verbose.

Statische Code Coverage für C++-Code

Das Microsoft.CodeCoverage.Console-Tool kann verwendet werden, um Code Coverage für C++ mithilfe statischer Instrumentierung zu sammeln. Es gibt drei verschiedene Methoden, die Sie verwenden können. Nehmen wir an, wir haben eine einfache C++-Konsolenanwendung (verknüpft mit der Option /PROFILE):

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

Verwenden des Befehls „Nur sammeln“ mit Konfiguration

Wenn Sie den Befehl instrument nicht verwenden möchten, müssen die zu instrumentierenden Dateien in einer Konfigurationsdatei wie folgt angegeben werden:

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

Anschließend können Sie Code Coverage wie folgt sammeln:

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.

Verwenden der Befehle „Instrument“ und „Sammeln“

In diesem Fall muss die erste Binärdatei wie folgt instrumentiert werden:

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

Anschließend können Sie Code Coverage wie folgt sammeln:

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

Verwenden der Befehle „Instrument“ und „Sammeln“ im Servermodus

In diesem Fall können Sie die Coveragesammlung vollständig von der Ausführung Ihrer Anwendung trennen. Instrumentieren Sie zuerst Ihre Binärdatei wie folgt:

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

Hinweis

Die Sitzungs-ID muss in diesem Szenario verwendet werden, um sicherzustellen, dass die Anwendung eine Verbindung herstellen und Daten an den externen Collector bereitstellen kann.

Im zweiten Schritt müssen Sie den Coverage-Collector wie folgt starten:

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

Anschließend kann die Anwendung wie folgt gestartet werden:

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

Hinweis

Eine instrumentierte native Binärdatei enthält einen Verweis auf static_covrun64.dll. Stellen Sie sicher, dass sich diese Datei neben der instrumentierten Binärdatei befindet oder dass das Verzeichnis, in dem sie sich static_covrun64.dll befindet, in der Umgebungsvariable Path aufgeführt ist. Die Befehle collect und connect fügen automatisch ordnungsgemäße Verzeichnisse zu Path hinzu.

Schließlich kann der Collector wie folgt geschlossen werden:

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