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
,Info
enVerbose
.-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