Microsoft.CodeCoverage.Console aracı
Microsoft.CodeCoverage.Console bir komut satırı aracıdır. Bunu kullanarak C++ ve C# kodu için kod kapsamı toplayabilirsiniz. Ayrıca kod kapsamı raporlarını birleştirmeyi ve dönüştürmeyi de destekler. Bu araç, test dışı senaryolarda (örneğin, basit bir konsol uygulaması için) kod kapsamı toplamak için kullanılabilir.
Microsoft.CodeCoverage.Console, Visual Studio 2022 17.3'te klasörünün Common7\IDE\Extensions\Microsoft\CodeCoverage.Console
altında bulunur. Bunu bir Geliştirici Komut İstemi ve Geliştirici PowerShell'de kullanabilirsiniz:
Not
Araç yalnızca Visual Studio Enterprise ile kullanılabilir. .NET kod kapsamı için alternatif olarak dotnet-coverage komut satırı aracını kullanabilirsiniz.
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.
Toplama, bağlanma, kapatma, birleştirme ve anlık görüntü komutları
Microsoft.CodeCoverage.Console aracı, dotnet-coverage dotnet aracının uzantısıdır. Toplama, bağlanma, kapatma, birleştirme ve anlık görüntü komutlarının belgelerine buradan ulaşabilirsiniz.
Microsoft.CodeCoverage.Console, IIS'den ASP.NET kod kapsamı verilerinin toplanmasına olanak tanıyan ek güvenlik özelliklerini destekler. Ayrıca, Microsoft.CodeCoverage.Console aracı C++ kodu için kod kapsamı toplamayı destekler. instrument
komutu bu senaryolara özgüdür.
instrument komutu
instrument komutu diskte yerel veya yönetilen ikiliyi işaretlemek için kullanılır.
Özet
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>
Bağımsız değişkenler
<input-file>
Giriş ikili dosyası.
Seçenekler
-s|--settings <settings>
XML kod kapsamı ayarlarının yolunu ayarlar.
-id|--session-id <session-id>
Kod kapsamı oturum kimliğini belirtir. Sağlanmazsa, araç rastgele bir GUID oluşturur.
-o|--output <output>
Çıkış dosyası ikili dosyasının yolunu ayarlar. Sağlanmazsa izleme yerinde gerçekleştirilir.
-l|--log-file <log-file>
Günlük dosyası yolunu ayarlar. Bir dizin sağladığınızda (sonunda bir yol ayırıcı ile), analiz altındaki her işlem için yeni bir günlük dosyası oluşturulur.
-ll|--log-level <log-level>
Günlük düzeyini ayarlar. Desteklenen değerler:
Error
,Info
veVerbose
.
C++ kodu için statik kod kapsamı
Microsoft.CodeCoverage.Console aracı, statik izleme kullanarak C++ için kod kapsamı toplamak için kullanılabilir. Kullanabileceğiniz üç farklı yöntem vardır. Göstermek için basit bir C++ konsol uygulamamız olduğunu varsayalım (/PROFILE seçeneğiyle bağlantılı):
D:\ConsoleApplication\x64\Debug> .\ConsoleApplication.exe
Hello World!
Yapılandırma dosyasıyla collect komutunu kullanan kod kapsamı
komutunu kullanmak instrument
istemiyorsanız, bunun yerine bir yapılandırma dosyası kullanarak izleyebileceğiniz dosyaları aşağıdaki gibi belirtebilirsiniz:
<ModulePaths>
<IncludeDirectories>
<Directory>D:\ConsoleApplication\x64\Debug</Directory>
</IncludeDirectories>
</ModulePaths>
Ardından kod kapsamını aşağıdaki gibi toplayın:
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.
İzleme ve toplama komutlarını kullanarak kod kapsamı
Kod kapsamı verilerini toplamadan önce ikiliyi aşağıdaki gibi izleyin:
D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console instrument ConsoleApplication.exe
Input file successfully instrumented.
Ardından kod kapsamını aşağıdaki gibi toplayın:
D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console collect .\ConsoleApplication.exe
SessionId: e85e657f-9ff3-42a0-88d7-2349598a1ecd
Hello World!
Code coverage results: output.coverage.
İzleme komutunu kullanarak kod kapsamı ve sunucu modunda komut toplama
Bu yöntemi kullanarak kod kapsamı koleksiyonunu uygulamanızı çalıştırmaktan ayırabilirsiniz. İlk olarak, ikili dosyanızı aşağıdaki gibi izleyin:
D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console instrument --session-id 73c34ce5-501c-4369-a4cb-04d31427d1a4 ConsoleApplication.exe
Input file successfully instrumented.
Not
Uygulamanın dış toplayıcıya bağlanıp veri sağlayabilmesi için bu senaryoda oturum kimliğinin kullanılması gerekir.
İkinci adımda kod kapsamı toplayıcısını aşağıdaki gibi başlatmanız gerekir:
D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console collect --session-id 73c34ce5-501c-4369-a4cb-04d31427d1a4 --server-mode
SessionId: 73c34ce5-501c-4369-a4cb-04d31427d1a4
Ardından uygulamayı aşağıdaki gibi başlatın:
D:\ConsoleApplication\x64\Debug>.\ConsoleApplication.exe
Hello World!
Not
İzlemeli yerel ikili, öğesine static_covrun64.dll
bir başvuru içerir. Bu dosyanın, izlemeli ikili dizinin yanında olduğundan veya bulunduğu dizinin static_covrun64.dll
ortam değişkeninde listelendiğinden Path
emin olun. collect
ve connect
komutları otomatik olarak uygun Path
dizinler ekliyor.
Son olarak, toplayıcıyı aşağıdaki gibi kapatın:
D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console shutdown 73c34ce5-501c-4369-a4cb-04d31427d1a4