Bagikan melalui


Alat Microsoft.CodeCoverage.Console

Microsoft.CodeCoverage.Console adalah alat baris perintah yang dapat Anda gunakan untuk mengumpulkan cakupan kode untuk kode C++ dan C#. Ini juga mendukung penggabungan dan konversi laporan cakupan kode. Alat ini dapat digunakan untuk mengumpulkan cakupan kode dalam skenario non-pengujian (misalnya, untuk aplikasi konsol sederhana).

Alat ini adalah ekstensi untuk dotnet-coverage dotnet yang menambahkan dukungan untuk skenario berikut:

  • Menambahkan fitur keamanan untuk memungkinkan pengumpulan data cakupan kode ASP.NET dari IIS.
  • Mengumpulkan cakupan kode untuk kode C++.

Nota

Cakupan kode tersedia di edisi Visual Studio Enterprise, Community, dan Professional. Di Visual Studio 2022 dan versi sebelumnya, fitur cakupan kode terbatas pada edisi Visual Studio Enterprise.

Nota

Cakupan kode hanya tersedia dengan Visual Studio Enterprise. Untuk cakupan kode .NET, Anda bisa menggunakan alat perintah baris, dotnet-coverage.

Microsoft.CodeCoverage.Console tersedia di Visual Studio 2022 17.3 di bawah folder Common7\IDE\Extensions\Microsoft\CodeCoverage.Console. Anda dapat menggunakannya di Command Prompt Pengembang dan PowerShell Pengembang.

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.

Perintah Kumpulkan, sambungkan, matikan, gabungkan, rekam jepret, dan hapus instrumen

Alat Microsoft.CodeCoverage.Console adalah ekstensi untuk dotnet-coverage dotnet tool. Dokumentasi untuk perintah kumpulkan, sambungkan, matikan, gabungkan, rekam jepret, dan penghapusan instrumen dapat ditemukan di sini.

Microsoft.CodeCoverage.Console mendukung fitur keamanan tambahan untuk memungkinkan pengumpulan data cakupan kode ASP.NET dari IIS. Selain itu, alat Microsoft.CodeCoverage.Console mendukung pengumpulan cakupan kode untuk kode C++. Perintah instrument khusus untuk skenario ini.

Perintah alat

Perintah instrumen digunakan untuk menginstrumen biner asli atau terkelola pada disk.

Sinopsis

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]

Argumen

  • <input-file>

    Input biner.

Opsi

  • -s|--settings <settings>

    Mengatur jalur ke pengaturan cakupan kode XML. File pengaturan dapat digunakan untuk mengecualikan beberapa modul atau metode dari analisis cakupan kode. Formatnya sama dengan konfigurasi pengumpul data di dalam file .runsettings. Untuk keterangan lebih lanjut, lihat Menyesuaikan analisis cakupan kode.

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

    Menentukan ID sesi cakupan kode. Jika tidak disediakan, alat ini akan menghasilkan GUID acak.

  • -o|--output <output>

    Mengatur jalur ke berkas output biner. Jika tidak disediakan, instrumentasi akan dilakukan di tempat.

  • -l|--log-file <log-file>

    Mengatur jalur file log. Saat Anda menyediakan direktori (dengan pemisah jalur di akhir), file log baru dibuat untuk setiap proses yang sedang dianalisis.

  • -ll|--log-level <log-level>

    Mengatur tingkat log. Nilai yang didukung: Error, Info, dan Verbose.

  • -dco|--disable-console-output

    Menonaktifkan output konsol.

  • --nologo

    Jangan tampilkan spanduk Cakupan Kode.

Cakupan kode statis untuk kode C++

Alat Microsoft.CodeCoverage.Console dapat digunakan untuk mengumpulkan cakupan kode untuk C++ menggunakan instrumentasi statis. Ada tiga metode berbeda yang tersedia yang dapat Anda gunakan. Untuk menunjukkan, mari kita asumsikan kita memiliki aplikasi konsol C++ sederhana (ditautkan dengan opsi /PROFILE):

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

Cakupan kode menggunakan perintah kumpulkan dengan file konfigurasi (C++)

Jika Anda tidak ingin menggunakan perintah instrument, Anda dapat menggunakan file konfigurasi untuk menentukan file yang akan diinstrumentasikan, sebagai berikut:

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

Kemudian, kumpulkan cakupan kode sebagai berikut:

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.

File pengaturan dapat digunakan untuk mengecualikan beberapa modul atau metode dari analisis cakupan kode. Formatnya sama dengan konfigurasi pengumpul data di dalam file .runsettings. Untuk keterangan lebih lanjut, lihat Menyesuaikan analisis cakupan kode.

Cakupan kode menggunakan perintah 'instrument' dan 'collect' (C++)

Sebelum mengumpulkan data cakupan kode, pertama-tama lakukan instrumenasi terhadap biner sebagai berikut:

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

Kemudian, kumpulkan cakupan kode sebagai berikut:

D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console collect .\ConsoleApplication.exe
SessionId: e85e657f-9ff3-42a0-88d7-2349598a1ecd
Hello World!
Code coverage results: output.coverage.

Cakupan kode menggunakan perintah instrumen dan kumpulkan perintah dalam mode server (C++)

Dengan menggunakan metode ini, Anda dapat memisahkan kumpulan cakupan kode dari menjalankan aplikasi Anda. Pertama, instrumentasikan biner Anda sebagai berikut:

D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console instrument --session-id 73c34ce5-501c-4369-a4cb-04d31427d1a4 ConsoleApplication.exe
Input file successfully instrumented.

Nota

ID Sesi perlu digunakan dalam skenario ini untuk memastikan bahwa aplikasi dapat terhubung dan menyediakan data ke pengumpul eksternal.

Pada langkah kedua, Anda perlu memulai pengumpul cakupan kode sebagai berikut:

D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console collect --session-id 73c34ce5-501c-4369-a4cb-04d31427d1a4 --server-mode
SessionId: 73c34ce5-501c-4369-a4cb-04d31427d1a4

Kemudian, mulai aplikasi sebagai berikut:

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

Nota

Biner asli yang diinstrumentasi berisi referensi ke static_covrun64.dll. Pastikan bahwa file ini berada di samping biner berinstrumentasi atau direktori tempat static_covrun64.dll berada tercantum dalam variabel lingkungan Path. Perintah collect dan connect menambahkan direktori yang tepat ke Path secara otomatis.

Terakhir, tutup kolektor sebagai berikut:

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