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ünde Common7\IDE\Extensions\Microsoft\CodeCoverage.Consolebulunur. 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. Ayrıca, Microsoft.CodeCoverage.Console aracı C++ kodu için kod kapsamı toplamayı destekler.

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, Infove Verbose.

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!

Yalnızca collect komutunu yapılandırmayla kullanma

komutunu kullanmak instrument istemiyorsanız, izlenecek dosyaların bir yapılandırma dosyasında aşağıdaki gibi belirtilmesi gerekir:

<ModulePaths>
  <IncludeDirectories>
    <Directory>D:\ConsoleApplication\x64\Debug</Directory>
  </IncludeDirectories>
</ModulePaths>

Ardından kod kapsamını aşağıdaki gibi toplayabilirsiniz:

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ı kullanma

Bu durumda, ilk ikili dosya aşağıdaki gibi izlenmelidir:

D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console instrument ConsoleApplication.exe
Input file successfully instrumented.

Ardından kod kapsamını aşağıdaki gibi toplayabilirsiniz:

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 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:\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, 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 uygulama şu şekilde başlatılabilir:

D:\ConsoleApplication\x64\Debug>.\ConsoleApplication.exe
Hello World!

Not

İzlemeli yerel ikili, öğesine static_covrun64.dllbir 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ı aşağıdaki gibi kapatılabilir:

D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console shutdown 73c34ce5-501c-4369-a4cb-04d31427d1a4