Megosztás:


Microsoft.CodeCoverage.Console eszköz

A Microsoft.CodeCoverage.Console egy parancssori eszköz, amellyel c++ és C#-kód kódlefedettségeket gyűjthet. Emellett támogatja a kódlefedettségi jelentések egyesítését és konvertálását. Ez az eszköz kódlefedettség gyűjtésére használható nem tesztelési forgatókönyvekben (például egy egyszerű konzolalkalmazás esetében).

Ez az eszköz a dotnet-coverage dotnet eszköz bővítménye, amely támogatja a következő forgatókönyveket:

  • Biztonsági funkciókkal teszi lehetővé ASP.NET kódlefedettségi adatok gyűjtését az IIS-ből.
  • C++ kód kódlefedettségeinek gyűjtése.

Jegyzet

A kódlefedettség a Visual Studio Enterprise, a Community és a Professional kiadásokban érhető el. A Visual Studio 2022-ben és a korábbi verziókban a kódlefedettségi funkció a Visual Studio Enterprise kiadásra korlátozódott.

Jegyzet

A kódlefedettség csak a Visual Studio Enterprise-nal érhető el. .NET-kódlefedettség esetén a parancssori eszközt is használhatja, dotnet-coverage.

A Microsoft.CodeCoverage.Console a Visual Studio 2022 17.3-ban érhető el a Common7\IDE\Extensions\Microsoft\CodeCoverage.Consolemappában. Használhatja egy fejlesztői parancssorban és egy fejlesztői PowerShellben:

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.

Adatgyűjtés, csatlakozás, leállítás, egyesítés, pillanatkép készítése és visszavonás parancsok

A Microsoft.CodeCoverage.Console eszköz a dotnet-coverage dotnet eszköz bővítménye. A collect, connect, shutdown, merge, snapshot és az uninstrument parancsok dokumentációja itttalálható.

A Microsoft.CodeCoverage.Console további biztonsági funkciókat is támogat, amelyek lehetővé teszik ASP.NET kódlefedettségi adatok gyűjtését az IIS-ből. Emellett a Microsoft.CodeCoverage.Console eszköz támogatja a C++ kód kódlefedettségeinek gyűjtését. A instrument parancs ezekre a forgatókönyvekre jellemző.

Műszer parancs

Az "instrument" parancsot a lemezen található natív vagy felügyelt bináris fájlok instrumentálására használják.

Áttekintés

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]

Érvek

  • <input-file>

    A bemeneti bináris.

Beállítások

  • -s|--settings <settings>

    Beállítja az XML-kódlefedettségi beállítások elérési útját. A beállításfájl használatával kizárhat néhány modult vagy metódust a kódlefedettség-elemzésből. A formátum megegyezik a .runsettings fájlban található adatgyűjtő konfigurációval. További információ: Kódlefedettségi elemzés testreszabása.

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

    Megadja a kódlefedettségi munkamenet azonosítóját. Ha nincs megadva, az eszköz véletlenszerű GUID-azonosítót hoz létre.

  • -o|--output <output>

    Beállítja a kimeneti fájl bináris elérési útját. Ha nincs megadva, a műszeres vizsgálat helyben történik.

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

    Beállítja a naplófájl elérési útját. Ha megad egy könyvtárat (a végén egy elérésiút-elválasztóval), a rendszer új naplófájlt hoz létre az elemzés alatt álló minden folyamathoz.

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

    Beállítja a naplószintet. Támogatott értékek: Error, Infoés Verbose.

  • -dco|--disable-console-output

    Letiltja a konzol kimenetét.

  • --nologo

    Ne jelenítse meg a Kódlefedettség feliratot.

Statikus kódlefedettség C++ kódhoz

A Microsoft.CodeCoverage.Console eszközzel statikus rendszerállapot használatával gyűjthetők a C++ kódlefedettségi adatai. Három különböző módszer érhető el, amelyeket használhat. A szemléltetés érdekében tegyük fel, hogy egy egyszerű C++ konzolalkalmazással rendelkezünk (a /PROFILElehetőséggel összekapcsolva):

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

Kódlefedettség a konfigurációs fájlt használó collect parancs segítségével (C++)

Ha nem szeretné használni a instrument parancsot, ehelyett egy konfigurációs fájllal adhatja meg az eszközhöz szükséges fájlokat az alábbiak szerint:

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

Ezután gyűjtse össze a kódlefedettségeket az alábbiak szerint:

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.

A beállításfájl használatával kizárhat néhány modult vagy metódust a kódlefedettség-elemzésből. A formátum megegyezik a .runsettings fájlban található adatgyűjtő konfigurációval. További információ: Kódlefedettségi elemzés testreszabása.

Kódlefedettség az instrument és collect parancsok használatával (C++)

A kódlefedettségi adatok gyűjtése előtt először a binárist a következőképpen kell beállítani:

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

Ezután gyűjtse össze a kódlefedettségeket az alábbiak szerint:

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

Kódlefedettség eszközparancs használatával és parancs összegyűjtése kiszolgáló módban (C++)

Ezzel a módszerrel elkülönítheti a kódlefedettségi gyűjteményt az alkalmazás futtatásától. Először a következőképpen alakítsa ki a binárist:

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

Jegyzet

Ebben a forgatókönyvben munkamenet-azonosítót kell használni annak biztosításához, hogy az alkalmazás kapcsolódni tud, és adatokat biztosítson a külső gyűjtőnek.

A második lépésben a kódlefedettségi gyűjtőt az alábbiak szerint kell elindítania:

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

Ezután indítsa el az alkalmazást az alábbiak szerint:

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

Jegyzet

A műszerezett natív bináris tartalmaz egy hivatkozást a(z) static_covrun64.dll-ra. Győződjön meg arról, hogy ez a fájl az instrumentált bináris mellett található, vagy a static_covrun64.dll-t tartalmazó könyvtár fel van tüntetve a Path környezeti változóban. A collect és connect parancsok automatikusan hozzáadnak megfelelő könyvtárakat Path.

Végül zárja be a gyűjtőt az alábbi lépések szerint:

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