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.Consolealtı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, 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!

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.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ıyı aşağıdaki gibi kapatın:

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