Aracılığıyla paylaş


Microsoft.CodeCoverage.Console aracı

Microsoft.CodeCoverage.Console, C++ ve C# kodu için kod kapsamı toplamak için kullanabileceğiniz bir komut satırı aracıdır. 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.

Bu araç, aşağıdaki senaryolar için destek ekleyen dotnet-coverage dotnet aracının bir uzantısıdır:

  • IIS'den ASP.NET kod kapsamı verilerini toplamayı etkinleştirmek için güvenlik özellikleri ekler.
  • C++ kodunun kod kapsamasını toplama.

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.

Microsoft.CodeCoverage.Console, Visual Studio 2022 17.3'te Common7\IDE\Extensions\Microsoft\CodeCoverage.Consoleklasörünün altında bulunur. Bunu bir Geliştirici Komut İstemi ve Geliştirici PowerShell'de kullanabilirsiniz:

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.

Topla, bağlan, kapat, birleştir, anlık görüntü al ve kaldır komutları

Microsoft.CodeCoverage.Console aracı, dotnet-coverage dotnet aracının bir uzantısıdır. Toplama, bağlanma, kapatma, birleştirme, anlık görüntü ve yetkisiz erişim komutlarına yönelik belgeler burada bulunabilir.

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.

araç komutu

instrument komutu, diskteki yerel veya yönetilen ikili dosyaları enstrümantasyon yapmak için kullanılır.

Özet

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]

Tartışmalar

  • <input-file>

    Giriş ikili

Seçenekler

  • -s|--settings <settings>

    XML kod kapsamı ayarlarının yolunu ayarlar. 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 Kod Kapsamı Analizini Özelleştirmebölümüne bakın.

  • -id|--session-id <session-id>

    Kod kapsamı oturum kimliğini belirtir. Sağlanmazsa, araç rastgele bir GUID oluşturur.

  • -o|--output <output>

    Çıkış ikili dosyasının yolunu ayarlar. Sağlanmazsa, ölçüm bulunduğu yerde yapılacaktır.

  • -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.

  • -dco|--disable-console-output

    Konsol çıkışını devre dışı bırakır.

  • --nologo

    Kod Kapsamı başlığını görüntülemeyin.

C++ kodu için statik kod kapsamı

Microsoft.CodeCoverage.Console aracı, statik araçsal kullanımı 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 (/PROFILEseçeneğiyle bağlantılı):

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

Yapılandırma dosyasıyla collect komutunu kullanan kod kapsamı (C++)

instrument komutunu kullanmak istemiyorsanız, yerine hangi dosyaların enstrüman edileceğini belirtmek için aşağıdaki gibi bir ayarlama dosyası kullanabilirsiniz.

<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.

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, kod kapsamı çözümlemesini özelleştirmebölümüne bakınız.

Araç ve toplama komutlarını kullanarak kod kapsamı (C++)

Kod kapsamı verilerini toplamadan önce binar dosyayı aşağıdaki şekilde araçlandırın:

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.

C++ için sunucu modunda enstrümantasyon komutunu ve toplama komutunu kullanarak kod kapsamı.

Bu yöntemi kullanarak kod kapsamı koleksiyonunu uygulamanızı çalıştırmaktan ayırabilirsiniz. İlk olarak, ikili dosyanızı aşağıdaki gibi hazırlayın:

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

Enstrümanlanmış yerel ikili, static_covrun64.dllreferansını içerir. Bu dosyanın, araçlı ikili dosyanın yanında olduğundan veya static_covrun64.dll bulunduğu dizinin Path ortam değişkeninde listelendiğinden emin olun. collect ve connect komutları Path otomatik olarak uygun 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