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 dem Ordner Common7\IDE\Extensions\Microsoft\CodeCoverage.Console
verfü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.
Microsoft.CodeCoverage.Console unterstützt zusätzliche Sicherheitsfunktionen, um das Sammeln von ASP.NET-Codeabdeckungsdaten von IIS zu ermöglichen. Darüber hinaus unterstützt das Microsoft.CodeCoverage.Console-Tool das Sammeln von Code Coverage für C++-Code. Der instrument
Befehl ist für diese Szenarien spezifisch.
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
undVerbose
.
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!
Codeabdeckung mithilfe von Collect-Befehl mit Konfigurationsdatei
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>
Anschließend sammeln Sie Code Coverage 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.
Codeabdeckung mit Instrumenten- und Erfassungsbefehlen
Bevor Codeabdeckungsdaten 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.
Anschließend sammeln Sie Code Coverage 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.
Codeabdeckung mit dem Befehl „instrument” und dem Befehl „collect” im Servermodus
Mit dieser Methode können Sie die Erfassung der Codeabdeckung 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 Code 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
Starten Sie dann die Anwendung wie folgt:
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.
Zum Schluss schließen Sie den Collector wie folgt:
D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console shutdown 73c34ce5-501c-4369-a4cb-04d31427d1a4