dotnet-coverage kod kapsamı yardımcı programı
Bu makale şunlar için geçerlidir: ✔️ .NET Core 3.1 SDK ve sonraki sürümler
Özet
dotnet-coverage <command> [-h, --help] [--version]
Açıklama
Araç dotnet-coverage
:
- Çalışan bir işlemin kod kapsamı verilerinin platformlar arası toplanmasını sağlar.
- Kod kapsamı raporlarının platformlar arası birleştirilmesini sağlar.
Seçenekler
-h|--help
Komut satırı yardımlarını gösterir.
--version
dotnet-coverage yardımcı programının sürümünü görüntüler.
Yükleme
NuGet paketinin en son sürüm sürümünü dotnet-coverage
yüklemek için dotnet tool install komutunu kullanın:
dotnet tool install --global dotnet-coverage
Komutlar
Command |
---|
dotnet-coverage merge |
dotnet-coverage collect |
dotnet-coverage connect |
dotnet-coverage anlık görüntüsü |
dotnet-coverage shutdown |
dotnet-coverage instrument |
dotnet-coverage uninstrument |
dotnet-coverage merge
merge
Komutu, birkaç kod kapsamı raporunu tek bir kod kapsamı raporuyla birleştirmek için kullanılır. Bu komut tüm platformlarda kullanılabilir. Bu komut aşağıdaki kod kapsamı rapor biçimlerini destekler:
coverage
cobertura
xml
Özet
dotnet-coverage merge
<files>...
[--remove-input-files]
[-o|--output <output>] [-f|--output-format <output-format>]
[-l|--log-file <log-file>] [-ll|--log-level <log-level>]
[-dco|--disable-console-output] [--nologo]
[-?|-h|--help]
Bağımsız değişkenler
<files>
Giriş kodu kapsamı raporları.
Seçenekler
--remove-input-files
Birleştirilmiş tüm giriş kapsamı raporlarını kaldırır.
-r, --recursive
.NET 7 SDK ve önceki sürümler Yalnızca alt dizinlerdeki kapsam raporlarını arayın.
-o|--output <output>
Kod kapsamı raporu çıkış dosyasını ayarlar.
-f|--output-format <output-format>
Çıkış dosyası biçimi. Desteklenen değerler:
coverage
,xml
vecobertura
. Varsayılan değerdircoverage
(Visual Studio'da açılabilir ikili biçim).-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
.-dco|--disable-console-output
Konsol çıkışını devre dışı bırakır.
--nologo
Kod Kapsamı başlığını görüntülemeyin.
dotnet-coverage collect
komutu collect
, herhangi bir .NET işlemi ve alt işlemleri için kod kapsamı verilerini toplamak için kullanılır. Örneğin, bir konsol uygulaması veya Blazor uygulaması için kod kapsamı verileri toplayabilirsiniz. Bu komut dinamik ve statik izlemeyi destekler. Statik izleme tüm platformlarda kullanılabilir. Seçeneği kullanarak include-files
statik olarak izlenecek dosyaları belirtebilirsiniz. Dinamik izleme Windows (x86, x64 ve Arm64), Linux (x64) ve macOS (x64) üzerinde kullanılabilir. komutu yalnızca .NET modüllerini destekler. Yerel modüller desteklenmez.
Özet
Komut collect
iki modda çalıştırılabilir.
Komut Modu
komutu, collect
bağımsız değişkeni tarafından command
yürütülen belirli bir işlem için kod kapsamı toplar.
dotnet-coverage collect
<command> <args>...
[-s|--settings <settings>] [-id|--session-id <session-id>]
[-if|--include-files <include-files>] [-o|--output <output>] [-f|--output-format <output-format>]
[-l|--log-file <log-file>] [-ll|--log-level <log-level>]
[-dco|--disable-console-output] [--nologo]
[-?|-h|--help]
Sunucu Modu
komutu, collect
kod kapsamı koleksiyonu için bir sunucu barındırıyor. İstemciler, komut aracılığıyla connect
sunucuya bağlanabilir.
dotnet-coverage collect
[-s|--settings <settings>] [-id|--session-id <session-id>]
[-sv|--server-mode] [-b|--background] [-t|--timeout]
[-if|--include-files <include-files>] [-o|--output <output>] [-f|--output-format <output-format>]
[-l|--log-file <log-file>] [-ll|--log-level <log-level>]
[-dco|--disable-console-output] [--nologo]
[-?|-h|--help]
Bağımsız değişkenler
<command>
Kod kapsamı verilerinin toplandığı komut.
<args>
Komutun komut satırı bağımsız değişkenleri.
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.
-sv|--server-mode
Toplayıcıyı sunucu modunda başlatır. İstemciler komutuyla sunucuya
connect
bağlanabilir.-b|--background
Kod kapsamı toplama sunucusunu yeni bir arka plan işleminde başlatır. İstemciler komutuyla sunucuya
connect
bağlanabilir.-t|--timeout
İstemciler ve sunucu arasındaki işlemler arası iletişim için zaman aşımı (milisaniye cinsinden).
-if|--include-files <include-files>
Statik olarak izlenecek dosyaların listesini belirtir.
-o|--output <output>
Kod kapsamı raporu çıkış dosyasını ayarlar.
-f|--output-format <output-format>
Çıkış dosyası biçimi. Desteklenen değerler:
coverage
,xml
vecobertura
. Varsayılan değerdircoverage
(Visual Studio'da açılabilir ikili biçim).-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
.-dco|--disable-console-output
Konsol çıkışını devre dışı bırakır.
--nologo
Kod Kapsamı başlığını görüntülemeyin.
dotnet-coverage connect
komutu connect
mevcut sunucuya bağlanmak için kullanılır ve tüm .NET işlemleri ve alt işlemleri için kod kapsamı verilerini toplar. Örneğin, bir konsol uygulaması veya Blazor uygulaması için kod kapsamı verileri toplayabilirsiniz. komutu yalnızca .NET modüllerini destekler. Yerel modüller desteklenmez.
Not
Komut, Windows (x86, x64 ve Arm64), Linux (x64) ve macOS (x64) üzerinde kullanılabilen tüm alt işlemler için dinamik izleme kullanır. Herhangi bir .NET modülünü statik olarak izlemeniz gerekiyorsa, komutu yürütmeden instrument
önce komutunu (ilgili oturum kimliği seçeneğiyle birlikte) kullanınconnect
.
Özet
dotnet-coverage connect
<session> <command> <args>...
[-b|--background] [-t|--timeout]
[-l|--log-file <log-file>] [-ll|--log-level <log-level>]
[-dco|--disable-console-output] [--nologo]
[-?|-h|--help]
Bağımsız değişkenler
<session>
komutu tarafından barındırılan sunucunun
collect
oturum kimliği.<command>
Kod kapsamı verilerinin toplandığı komut.
<args>
Komutun komut satırı bağımsız değişkenleri.
Seçenekler
-b|--background
İstemciyi yeni bir arka plan işleminde başlatır.
-t|--timeout
İstemci ile sunucu arasındaki işlemler arası iletişim için zaman aşımı (milisaniye cinsinden).*
-l|--log-file <log-file>
-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
.-dco|--disable-console-output
Konsol çıkışını devre dışı bırakır.
--nologo
Kod Kapsamı başlığını görüntülemeyin.
dotnet-coverage anlık görüntüsü
Mevcut kod kapsamı koleksiyonu için bir kapsam dosyası oluşturur.
Özet
dotnet-coverage snapshot
<session>
[-r|--reset]
[-tn|--tag-name <tag-name>] [-tid|--tag-identifier <tag-identifier>]
[-o|--output <output>]
[-t|--timeout]
[-l|--log-file <log-file>] [-ll|--log-level <log-level>]
[-dco|--disable-console-output] [--nologo]
[-?|-h|--help]
Bağımsız değişkenler
<session>
Kapsam dosyasının oluşturulacağı koleksiyonun oturum kimliği.
Seçenekler
-r|--reset <reset>
Bir kapsam dosyası oluşturulduktan sonra mevcut kapsam bilgilerini temizler.
-tn|--tag-name <tag-name>
Geçerli kapsam bilgileriyle kapsam dosyasında bir anlık görüntü etiketi adı oluşturur. Etiket adı ve etiket tanımlayıcısı birbirini kapsar.
-tid|--tag-identifier <tag-identifier>
Geçerli kapsam bilgileriyle kapsam dosyasında bir anlık görüntü etiketi tanımlayıcısı oluşturur. Etiket adı ve etiket tanımlayıcısı birbirini kapsar.
-o|--output <output>
Kod kapsamı raporu çıkış dosyasını ayarlar. Sağlanmazsa, zaman damgasıyla otomatik olarak oluşturulur.
-t|--timeout
İstemci ile sunucu arasındaki işlemler arası iletişim için zaman aşımı (milisaniye cinsinden).
-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
.-dco|--disable-console-output
Konsol çıkışını devre dışı bırakır.
--nologo
Kod Kapsamı başlığını görüntülemeyin.
dotnet-coverage shutdown
Mevcut kod kapsamı koleksiyonunu kapatır.
Özet
dotnet-coverage shutdown
<session>
[-t|--timeout]
[-l|--log-file <log-file>] [-ll|--log-level <log-level>]
[-dco|--disable-console-output] [--nologo]
[-?|-h|--help]
Bağımsız değişkenler
<session>
Kapatılacak koleksiyonun oturum kimliği.
Seçenekler
-t|--timeout
Sunucuyla işlemler arası iletişim için zaman aşımı (milisaniye cinsinden).
-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
.-dco|--disable-console-output
Konsol çıkışını devre dışı bırakır.
--nologo
Kod Kapsamı başlığını görüntülemeyin.
dotnet-coverage instrument
İzleme komutu diskte ikiliyi işaretlemek için kullanılır.
Özet
dotnet-coverage 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]
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
.-dco|--disable-console-output
Konsol çıkışını devre dışı bırakır.
--nologo
Kod Kapsamı başlığını görüntülemeyin.
dotnet-coverage uninstrument
Uninstrument komutu, özgün ikiliyi izleme ikilisinden geri yüklemek için kullanılır.
Özet
Microsoft.CodeCoverage.Console uninstrument
<input-file>
[-s|--settings <settings>]
[-l|--log-file <log-file>] [-ll|--log-level <log-level>]
[-dco|--disable-console-output] [--nologo]
[-?|-h|--help]
Bağımsız değişkenler
<input-file>
Giriş izlemeli ikili.
Seçenekler
-s|--settings <settings>
XML kod kapsamı ayarlarının yolunu ayarlar.
-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
.-dco|--disable-console-output
Konsol çıkışını devre dışı bırakır.
--nologo
Kod Kapsamı başlığını görüntülemeyin.
Örnek senaryolar
Kod kapsamı toplama
Aşağıdaki komutu kullanarak herhangi bir .NET uygulaması (konsol veya Blazor gibi) için kod kapsamı verilerini toplayın:
dotnet-coverage collect dotnet run
Sonlandırmak için sinyal gerektiren bir uygulama söz konusu olduğunda, kod kapsamı verilerini toplamanıza izin veren Ctrl+ kullanabilirsiniz. Bağımsız değişken için, sonunda bir .NET uygulaması başlatacak herhangi bir komut sağlayabilirsiniz. Örneğin, bir PowerShell betiği olabilir.
Oturumlar
Yalnızca iletileri bekleyen ve yanıt gönderen bir .NET sunucusunda kod kapsamı analizi çalıştırırken, son kod kapsamı sonuçlarını almak için sunucuyu durdurmanın bir yolu gerekir. Ctrl+ yerel olarak kullanabilirsiniz ancak Azure Pipelines'da kullanamazsınız. Bu senaryolar için oturumları kullanabilirsiniz. Koleksiyonu başlatırken bir oturum kimliği belirtebilir ve ardından komutunu kullanarak koleksiyonu ve sunucuyu durdurabilirsiniz shutdown
.
Örneğin, D:\serverexample\server dizininde bir sunucunuz ve D:\serverexample\tests dizininde bir test projeniz olduğunu varsayalım. Testler ağ üzerinden sunucuyla iletişim kuruyor. Sunucu için kod kapsamı toplama işlemini aşağıdaki gibi başlatabilirsiniz:
D:\serverexample\server> dotnet-coverage collect --session-id serverdemo "dotnet run"
Oturum Kimliği olarak serverdemo
belirtildi. Ardından testleri aşağıdaki gibi çalıştırabilirsiniz:
D:\serverexample\tests> dotnet test
Oturum serverdemo
için bir kod kapsamı dosyası aşağıdaki gibi geçerli kapsamla oluşturulabilir:
dotnet-coverage snapshot --output after_first_test.coverage serverdemo
Ayrıca, aşağıdaki etiket seçenekleri kullanılarak kapsam dosyasına bir anlık görüntü etiketi eklenebilir:
dotnet-coverage snapshot --tag-name after_first_test --tag-identifier after_first_test serverdemo
Son olarak oturum serverdemo
ve sunucu aşağıdaki gibi kapatılabilir:
dotnet-coverage shutdown serverdemo
Sunucu tarafında tam çıktı örneği aşağıda verilmiştir:
D:\serverexample\server> dotnet-coverage collect --session-id serverdemo "dotnet run"
SessionId: serverdemo
Waiting for a connection... Connected!
Received: Hello!
Sent: HELLO!
Waiting for a connection... Code coverage results: output.coverage.
D:\serverexample\server>
Sunucu ve istemci modu
Kod kapsamı toplama işlemi sunucu-istemci modunda da yapılabilir. Bu senaryoda, bir kod kapsamı toplama sunucusu başlatılır ve birden çok istemci sunucuya bağlanabilir. Kod kapsamı, tüm istemciler için toplu olarak toplanır.
Aşağıdaki komutu kullanarak kod kapsamı sunucusunu başlatın:
dotnet-coverage collect --session-id serverdemo --server-mode
Bu örnekte, oturum kimliği sunucu için olarak serverdemo
belirtildi. İstemci, aşağıdaki komutu kullanarak bu oturum kimliğini kullanarak sunucuya bağlanabilir:
dotnet-coverage connect serverdemo dotnet run
Son olarak, aşağıdaki komutu kullanarak oturumu serverdemo
ve sunucuyu kapatabilirsiniz:
dotnet-coverage shutdown serverdemo
Sunucu işlemi, tüm istemciler ve çıkışlar için toplu bir kod kapsamı raporu oluşturur.
Sunucu tarafında tam çıktı örneği aşağıda verilmiştir:
D:\serverexample\server> dotnet-coverage collect --session-id serverdemo --server-mode
SessionId: serverdemo
// Server will be in idle state and wait for connect and shutdown commands
Code coverage results: output.coverage.
D:\serverexample\server>
aşağıda, istemci tarafında tam çıktı örneği verilmiştir:
D:\serverexample\server> dotnet-coverage connect serverdemo ConsoleApplication.exe World
Hello World!!
D:\serverexample\server> dotnet-coverage connect serverdemo WpfApplication.exe
D:\serverexample\server> dotnet-coverage shutdown serverdemo
D:\serverexample\server>
Ayrıca hem sunucuyu hem de istemciyi arka plan modunda başlatabilirsiniz. Başka bir işlem arka planda başlar ve denetimi kullanıcıya geri döndürür.
Arka plan sunucusu istemci modunda tam çıktı örneği aşağıda verilmiştir:
D:\serverexample\server> dotnet-coverage collect --session-id serverdemo --server-mode --background
D:\serverexample\server> dotnet-coverage connect --background serverdemo ConsoleApplication.exe World
D:\serverexample\server> dotnet-coverage connect --background serverdemo WpfApplication.exe
D:\serverexample\server> dotnet-coverage shutdown serverdemo
D:\serverexample\server>
Yönetilen derlemeler için statik kod kapsamı
dotnet-coverage aracı, statik izleme kullanarak yönetilen derlemeler için kod kapsamını 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:
D:\examples\ConsoleApp> dotnet run
Hello, World!
Dosyaları ekle seçeneği veya yapılandırmasıyla collect komutunu kullanma
komutunu kullanmak instrument
istemiyorsanız, izlenecek dosyalar aşağıdaki seçenek kullanılarak --include-files
belirtilebilir:
D:\examples\ConsoleApp> dotnet-coverage collect --include-files .\bin\Debug\net7.0\*.dll dotnet run
Microsoft (R) Code Coverage Command Line Tool (x64)
Copyright (c) Microsoft Corporation. All rights reserved.
SessionId: 57862ec0-e512-49a5-8b66-2804174680fc
Hello, World!
Code coverage results: output.coverage.
Yapılandırma kullanılarak izlenecek dosyaları da aşağıdaki gibi belirtebilirsiniz:
<ModulePaths>
<IncludeDirectories>
<Directory>D:\examples\ConsoleApp\bin\Debug\net7.0</Directory>
</IncludeDirectories>
</ModulePaths>
İzleme ve toplama komutlarını kullanma
Bu durumda, ilk ikili dosya aşağıdaki gibi izlenmelidir:
D:\examples\ConsoleApp> dotnet-coverage instrument .\bin\Debug\net7.0\ConsoleApp.dll
Microsoft (R) Code Coverage Command Line Tool (x64)
Copyright (c) Microsoft Corporation. All rights reserved.
Input file successfully instrumented.
Ardından kod kapsamını aşağıdaki gibi toplayabilirsiniz:
D:\examples\ConsoleApp> dotnet-coverage collect .\bin\Debug\net7.0\ConsoleApp.exe
Microsoft (R) Code Coverage Command Line Tool (x64)
Copyright (c) Microsoft Corporation. All rights reserved.
SessionId: a09e6bef-ff64-4b5f-8bb8-fc495ebb50ba
Hello, World!
Code coverage results: output.coverage.
Aracı kullanma ve sunucu modunda komut toplama
Bu durumda, kapsam koleksiyonunu uygulamanızı çalıştırmaktan tamamen ayırabilirsiniz. İlk olarak, ikili dosyanızı aşağıdaki gibi izleyin:
D:\examples\ConsoleApp> dotnet-coverage instrument --session-id 73c34ce5-501c-4369-a4cb-04d31427d1a4 .\bin\Debug\net7.0\ConsoleApp.dll
Microsoft (R) Code Coverage Command Line Tool (x64)
Copyright (c) Microsoft Corporation. All rights reserved.
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, kapsam toplayıcısını aşağıdaki gibi başlatmanız gerekir:
D:\examples\ConsoleApp> dotnet-coverage collect --session-id 73c34ce5-501c-4369-a4cb-04d31427d1a4 --server-mode
Microsoft (R) Code Coverage Command Line Tool (x64)
Copyright (c) Microsoft Corporation. All rights reserved.
SessionId: 73c34ce5-501c-4369-a4cb-04d31427d1a4
Ardından uygulama şu şekilde başlatılabilir:
D:\examples\ConsoleApp> .\bin\Debug\net7.0\ConsoleApp.exe
Hello, World!
Son olarak, toplayıcı aşağıdaki gibi kapatılabilir:
D:\examples\ConsoleApp> dotnet-coverage shutdown 73c34ce5-501c-4369-a4cb-04d31427d1a4
Microsoft (R) Code Coverage Command Line Tool (x64)
Copyright (c) Microsoft Corporation. All rights reserved.
Ayarlar
komutunu kullanırken collect
ayarları içeren bir dosya belirtebilirsiniz. Ayarlar dosyası, bazı modülleri veya yöntemleri kod kapsamı analizinin dışında tutmak için kullanılabilir. Biçim, runsettings dosyasının içindeki veri toplayıcı yapılandırmasıyla aynıdır. Daha fazla bilgi için bkz . Kod kapsamı analizini özelleştirme. Bir örnek aşağıda verilmiştir:
<?xml version="1.0" encoding="utf-8"?>
<Configuration>
<CodeCoverage>
<!--
Additional paths to search for .pdb (symbol) files. Symbols must be found for modules to be instrumented.
If .pdb files are in the same folder as the .dll or .exe files, they are automatically found. Otherwise, specify them here.
Note that searching for symbols increases code coverage run time. So keep this small and local.
-->
<SymbolSearchPaths>
<Path>C:\Users\User\Documents\Visual Studio 2012\Projects\ProjectX\bin\Debug</Path>
<Path>\\mybuildshare\builds\ProjectX</Path>
</SymbolSearchPaths>
<!--
About include/exclude lists:
Empty "Include" clauses imply all; empty "Exclude" clauses imply none.
Each element in the list is a regular expression (ECMAScript syntax). See /visualstudio/ide/using-regular-expressions-in-visual-studio.
An item must first match at least one entry in the include list to be included.
Included items must then not match any entries in the exclude list to remain included.
-->
<!-- Match assembly file paths: -->
<ModulePaths>
<Include>
<ModulePath>.*\.dll$</ModulePath>
<ModulePath>.*\.exe$</ModulePath>
</Include>
<Exclude>
<ModulePath>.*CPPUnitTestFramework.*</ModulePath>
</Exclude>
<!-- Additional directories from .NET assemblies should be statically instrumented: -->
<IncludeDirectories>
<Directory Recursive="true">C:\temp</Directory>
</IncludeDirectories>
</ModulePaths>
<!-- Match fully qualified names of functions: -->
<!-- (Use "\." to delimit namespaces in C# or Visual Basic, "::" in C++.) -->
<Functions>
<Exclude>
<Function>^Fabrikam\.UnitTest\..*</Function>
<Function>^std::.*</Function>
<Function>^ATL::.*</Function>
<Function>.*::__GetTestMethodInfo.*</Function>
<Function>^Microsoft::VisualStudio::CppCodeCoverageFramework::.*</Function>
<Function>^Microsoft::VisualStudio::CppUnitTestFramework::.*</Function>
</Exclude>
</Functions>
<!-- Match attributes on any code element: -->
<Attributes>
<Exclude>
<!-- Don't forget "Attribute" at the end of the name -->
<Attribute>^System\.Diagnostics\.DebuggerHiddenAttribute$</Attribute>
<Attribute>^System\.Diagnostics\.DebuggerNonUserCodeAttribute$</Attribute>
<Attribute>^System\.CodeDom\.Compiler\.GeneratedCodeAttribute$</Attribute>
<Attribute>^System\.Diagnostics\.CodeAnalysis\.ExcludeFromCodeCoverageAttribute$</Attribute>
</Exclude>
</Attributes>
<!-- Match the path of the source files in which each method is defined: -->
<Sources>
<Exclude>
<Source>.*\\atlmfc\\.*</Source>
<Source>.*\\vctools\\.*</Source>
<Source>.*\\public\\sdk\\.*</Source>
<Source>.*\\microsoft sdks\\.*</Source>
<Source>.*\\vc\\include\\.*</Source>
</Exclude>
</Sources>
<!-- Match the company name property in the assembly: -->
<CompanyNames>
<Exclude>
<CompanyName>.*microsoft.*</CompanyName>
</Exclude>
</CompanyNames>
<!-- Match the public key token of a signed assembly: -->
<PublicKeyTokens>
<!-- Exclude Visual Studio extensions: -->
<Exclude>
<PublicKeyToken>^B77A5C561934E089$</PublicKeyToken>
<PublicKeyToken>^B03F5F7F11D50A3A$</PublicKeyToken>
<PublicKeyToken>^31BF3856AD364E35$</PublicKeyToken>
<PublicKeyToken>^89845DCD8080CC91$</PublicKeyToken>
<PublicKeyToken>^71E9BCE111E9429C$</PublicKeyToken>
<PublicKeyToken>^8F50407C4E9E73B6$</PublicKeyToken>
<PublicKeyToken>^E361AF139669C375$</PublicKeyToken>
</Exclude>
</PublicKeyTokens>
<EnableStaticManagedInstrumentation>True</EnableStaticManagedInstrumentation>
<EnableDynamicManagedInstrumentation>True</EnableDynamicManagedInstrumentation>
</CodeCoverage>
</Configuration>
Kod kapsamı raporlarını birleştirme
Verileri a.coverage
aşağıdaki gibi birleştirip b.coverage
merged.coverage
depolayabilirsiniz:
dotnet-coverage merge -o merged.coverage a.coverage b.coverage
Örneğin, gibi dotnet test --collect "Code Coverage"
bir komut çalıştırırsanız kapsam raporu rastgele GUID adlı bir klasörde depolanır. Bu tür klasörleri bulmak ve birleştirmek zordur. Bu aracı kullanarak, aşağıdaki gibi genelleme desenlerini kullanarak tüm projeleriniz için tüm kod kapsamı raporlarını birleştirebilirsiniz:
dotnet-coverage merge -o merged.cobertura.xml -f cobertura **\*.coverage
Yukarıdaki komut geçerli dizindeki tüm kapsam raporlarını ve tüm alt dizinleri birleştirir ve sonucu bir cobertura dosyasında depolar. Azure Pipelines'da kod kapsamı sonuçlarını yayımla görevini kullanarak birleştirilmiş bir cobertura raporu yayımlayabilirsiniz.
Bir kod kapsamı raporunu başka bir biçime dönüştürmek için komutunu kullanabilirsiniz merge
. Örneğin, aşağıdaki komut ikili kod kapsamı raporunu XML biçimine dönüştürür.
dotnet-coverage merge -o output.xml -f xml input.coverage