Bagikan melalui


Microsoft.CodeCoverage.Console tool

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

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

Catatan

Alat ini hanya tersedia dengan Visual Studio Enterprise. Untuk cakupan kode .NET, Anda dapat menggunakan alat baris perintah, cakupan dotnet.

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.

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

Alat Microsoft.CodeCoverage.Console adalah ekstensi ke alat dotnet dotnet cakupan dotnet. Dokumentasi untuk perintah kumpulkan, sambungkan, matikan, gabungkan, dan rekam jepret dapat ditemukan di sini. Selain itu, alat Microsoft.CodeCoverage.Console mendukung pengumpulan cakupan kode untuk kode C++.

Perintah instrumen

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

Sinopsis

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>

Argumen

  • <input-file>

    Biner input.

Opsi

  • -s|--settings <settings>

    Mengatur jalur ke pengaturan cakupan kode XML.

  • -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 biner file output. 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 bagian 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.

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!

Hanya menggunakan perintah kumpulkan dengan konfigurasi

Jika Anda tidak ingin menggunakan instrument perintah , maka file yang akan diinstrumentasikan perlu ditentukan dalam file konfigurasi sebagai berikut:

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

Kemudian Anda dapat mengumpulkan 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.

Menggunakan instrumen dan mengumpulkan perintah

Dalam hal ini, biner pertama perlu diinstrumentasikan sebagai berikut:

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

Kemudian Anda dapat mengumpulkan 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.

Menggunakan perintah instrumen dan mengumpulkan perintah dalam mode server

Dalam hal ini, Anda dapat sepenuhnya memisahkan koleksi cakupan dari menjalankan aplikasi Anda. Pertama, instrumen 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.

Catatan

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 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 aplikasi dapat dimulai sebagai berikut:

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

Catatan

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

Akhirnya, kolektor dapat ditutup sebagai berikut:

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