Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Microsoft.CodeCoverage.Console ist ein Befehlszeilentool, mit dem Sie Codeabdeckung für C++- und C#-Code sammeln können. Es unterstützt auch das Zusammenführen und Konvertieren von Code Coverage-Berichten. Dieses Tool kann verwendet werden, um codeabdeckung in Nichttestszenarien zu sammeln (z. B. für eine einfache Konsolenanwendung).
Dieses Tool ist eine Erweiterung des dotnet-Tools dotnet-coverage, das Unterstützung für die folgenden Szenarien hinzufügt:
- Fügt Sicherheitsfeatures hinzu, um das Sammeln von ASP.NET Codeabdeckungsdaten aus IIS zu ermöglichen.
- Erfassen der Code Coverage für C++-Code.
Anmerkung
Das Tool ist nur für Visual Studio Enterprise verfügbar. Für die .NET-Codeabdeckung können Sie alternativ das Befehlszeilentool dotnet-coverageverwenden.
Microsoft.CodeCoverage.Console ist in Visual Studio 2022 17.3 unter dem Ordner Common7\IDE\Extensions\Microsoft\CodeCoverage.Console
verfügbar. Sie können es in einer Entwickler-Eingabeaufforderung und einer Entwickler-PowerShell verwenden:
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.
Befehle zum Sammeln, Verbinden, Herunterfahren, Zusammenführen, Erstellen von Momentaufnahme und Aufheben der Instrumentierungen
Das Microsoft.CodeCoverage.Console-Tool wird auf .NET-Tool dotnet-coverage erweitert. Die Dokumentation zu den Befehlen zum Sammeln, Verbinden, Herunterfahren, Zusammenführen, Erstellen von Momentaufnahme und Aufheben der Instrumentierungen können Sie hier finden.
Microsoft.CodeCoverage.Console unterstützt zusätzliche Sicherheitsfeatures, um das Sammeln von ASP.NET Codeabdeckungsdaten aus IIS zu ermöglichen. Darüber hinaus unterstützt das Microsoft.CodeCoverage.Console-Tool das Sammeln von Codeabdeckungen für C++-Code. Der Befehl instrument
ist für diese Szenarien spezifisch.
Instrument-Befehl
Der Instrumentbefehl wird verwendet, um systemeigene oder verwaltete Binärdateien auf dem Datenträger zu instrumentieren.
Zusammenfassung
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]
Argumente
<input-file>
Die Eingabe-Binärdatei.
Optionen
-s|--settings <settings>
Legt den Pfad zu den XML-Codeabdeckungseinstellungen fest. Die Einstellungsdatei kann verwendet werden, um einige Module oder Methoden aus der Codeabdeckungsanalyse auszuschließen. Das Format entspricht der Datensammlerkonfiguration in einer .runsettings Datei. Weitere Informationen finden Sie unter Anpassen der Code Coverage-Analyse.
-id|--session-id <session-id>
Gibt die Code Coverage-Sitzungs-ID an. Wenn nicht angegeben, generiert das Tool eine zufällige GUID.
-o|--output <output>
Legt den Pfad für die Ausgabedatei binär fest. Wenn nicht bereitgestellt, wird die Instrumentierung vor Ort durchgeführt.
-l|--log-file <log-file>
Legt den Pfad der Protokolldatei fest. Wenn Sie ein Verzeichnis (mit einem Pfadtrennzeichen am Ende) bereitstellen, wird für jeden Prozess, der analysiert wird, eine neue Protokolldatei generiert.
-ll|--log-level <log-level>
Setzt die Protokollstufe fest. Unterstützte Werte:
Error
,Info
undVerbose
.-dco|--disable-console-output
Deaktiviert die Konsolenausgabe.
--nologo
Banner „Code Coverage“ nicht anzeigen
Statische Codeabdeckung für C++-Code
Das Microsoft.CodeCoverage.Console-Tool kann verwendet werden, um Codeabdeckung für C++ mithilfe statischer Instrumentierung zu erfassen. Es stehen drei verschiedene Methoden zur Verfügung, 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!
Codeabdeckung mithilfe des Collect-Befehls mit Konfigurationsdatei (C++)
Wenn Sie den Befehl instrument
nicht verwenden möchten, können Sie stattdessen eine Konfigurationsdatei verwenden, um die zu instrumentierenden Dateien wie folgt anzugeben:
<ModulePaths>
<IncludeDirectories>
<Directory>D:\ConsoleApplication\x64\Debug</Directory>
</IncludeDirectories>
</ModulePaths>
Erfassen Sie dann die Codeabdeckung wie folgt:
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.
Die Einstellungsdatei kann verwendet werden, um einige Module oder Methoden aus der Codeabdeckungsanalyse auszuschließen. Das Format entspricht der Datensammlerkonfiguration in einer .runsettings Datei. Weitere Informationen finden Sie unter Anpassen der Code Coverage-Analyse.
Code Coverage mit den Befehlen „Instrument“ und „Collect“ (C++)
Bevor Code Coverage-Daten gesammelt werden, instrumentieren Sie zunächst die Binärdatei wie folgt:
D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console instrument ConsoleApplication.exe
Input file successfully instrumented.
Erfassen Sie dann die Codeabdeckung wie folgt:
D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console collect .\ConsoleApplication.exe
SessionId: e85e657f-9ff3-42a0-88d7-2349598a1ecd
Hello World!
Code coverage results: output.coverage.
Code Coveragemit dem Befehl „Instrument“ und „Collect“ im Servermodus (C++)
Mit dieser Methode können Sie die Codeabdeckungsauflistung von der Ausführung Ihrer Anwendung trennen. Instrumentieren Sie zunächst 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.
Anmerkung
Die Sitzungs-ID muss in diesem Szenario verwendet werden, um sicherzustellen, dass die Anwendung eine Verbindung herstellen und Daten für den externen Sammeldienst bereitstellen kann.
Im zweiten Schritt müssen Sie den Codeabdeckungssammler 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
Starten Sie dann die Anwendung wie folgt:
D:\ConsoleApplication\x64\Debug>.\ConsoleApplication.exe
Hello World!
Anmerkung
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 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ßen Sie schließlich den Collector wie folgt:
D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console shutdown 73c34ce5-501c-4369-a4cb-04d31427d1a4