Freigeben über


Ausführen der CodeQL-Analyse unter Windows-Treibercode

CodeQL ist ein leistungsfähiges statisches Analysemodul, das Entwicklern hilft, Sicherheitsrisiken und Codeverletzungen in Windows-Treiberquellcode zu erkennen. In diesem Artikel wird erläutert, wie Sie mithilfe der CodeQL-Analyse eine Treiberüberprüfungsdatei für die WHCP-Zertifizierung (Driver Verification File for Windows Hardware Compatibility Program) erstellen.

In diesem Artikel führen Sie folgende Schritte aus:

  • Installieren Sie die entsprechende CodeQL-Version.
  • Installieren Sie die erforderlichen CodeQL-Pakete und Abfragesammlungen.
  • Führen Sie CodeQL aus, um eine Datenbank zu erstellen und Den Code zu analysieren.
  • Erstellen Sie eine Treiberüberprüfungsdatei.

Wählen Sie die entsprechende CodeQL-Version für Ihren Treiber aus.

Hinweis

Visual Studio (VS) 17.8 bricht die Kompatibilität mit älteren CodeQL-Versionen, die in den WHCP_21H2 und WHCP_22H2 Zweigen verwendet werden. CodeQL CLI Version 2.15.4 wird für die Verwendung mit WHCP 21H2 und WHCP 22H2 bei Verwendung von Visual Studio 17.8 oder höher überprüft. Wenn Sie Visual Studio 17.7 oder früher verwenden, verwenden Sie Version 2.4.6 oder Version 2.6.3. Verwenden Sie für das WHCP-Programm die CodeQL CLI-Version und die Windows-Version, für die Sie zertifiziert sind – Version 2.4.6, Version 2.6.3 oder Version 2.15.4. Verwenden Sie für die allgemeine Verwendung mit der Hauptverzweigung CodeQL CLI, Version 2.15.4.

Wählen Sie die Registerkarte für Ihr Szenario aus:

Verwenden Sie diese Matrix, um die herunterzuladenden Versionen zu ermitteln.

Windows-Veröffentlichung CodeQL CLI-Version CodeQL-Paketversion für Microsoft/Windows-Treiber codeql/cpp-queries CodeQL-Paketversion Zu verwendender Zweig
Windows Server 2022 2.4.6 oder 2.15.4 1.0.13 (Wenn Codeql 2.15.4 verwendet wird) 0.9.0 (Wenn Codeql 2.15.4 verwendet wird) WHCP_21H2
Windows 11 2.4.6 oder 2.15.4 1.0.13 (Wenn Codeql 2.15.4 verwendet wird) 0.9.0 (Wenn Codeql 2.15.4 verwendet wird) WHCP_21H2
Windows 11, Version 22H2 2.6.3 oder 2.15.4 1.0.13 (Wenn Codeql 2.15.4 verwendet wird) 0.9.0 (Wenn Codeql 2.15.4 verwendet wird) WHCP_22H2
Windows 11, Version 23H2 2.6.3 oder 2.15.4 1.0.13 (Wenn Codeql 2.15.4 verwendet wird) 0.9.0 (Wenn Codeql 2.15.4 verwendet wird) WHCP_22H2
Windows 11, Version 24H2 2.15.4 1.1.0 0.9.0 WHCP_24H2

Hinweis

Eine Version des CodeQL-Pakets wird für CodeQL CLI 2.4.6 und 2.6.3 nicht angegeben, da Versionen von CodeQL später als v2.7.0 CodeQL-Pakete unterstützen.

CodeQL herunterladen und installieren

  1. Erstellen Sie ein Verzeichnis, das CodeQL enthält. In diesem Beispiel wird C:\codeql-home\

    C:\> mkdir C:\codeql-home
    
  2. In den vorherigen Tabellen können Sie auswählen, welche Version von CodeQL CLI entsprechend dem gewünschten Branch der Treiberabfragen von Microsoft verwendet werden soll. Wenn Sie eine Analyse als Teil des WHCP-Programms durchführen, lesen Sie die Tabelle für die Verwendung des Windows-Hardwarekompatibilitätsprogramms. Verwenden Sie andernfalls "Main Branch" und "2.15.4". Die Verwendung einer anderen Version kann dazu führen, dass eine Datenbank nicht mit den Bibliotheken kompatibel ist.

  3. Navigieren Sie zu der CodeQL CLI-Binärdateien-Version, die den vorherigen Tabellen zugeordnet ist, und laden Sie die ZIP-Datei entsprechend der Architektur Ihres Projekts herunter. Zum Beispiel für 64-Bit-Windows codeql-win64.zip.

  4. Extrahieren Sie das Codeql CLI-Verzeichnis in das soeben erstellte Verzeichnis, z. B. *C:\codeql-home\codeql*.

  5. Überprüfen Sie, ob CodeQL ordnungsgemäß installiert ist, indem Sie die Version überprüfen:

     C:\codeql-home\codeql>codeql --version
     CodeQL command-line toolchain release 2.15.4.
     Copyright (C) 2019-2023 GitHub, Inc.
     Unpacked in: C:\codeql-home\codeql
         Analysis results depend critically on separately distributed query and
         extractor modules. To list modules that are visible to the toolchain,
         use 'codeql resolve qlpacks' and 'codeql resolve languages'.
    

Verwenden der CodeQL-Hilfe

C:\codeql-home\codeql\>codeql --help
Usage: codeql <command> <argument>...
Create and query CodeQL databases, or work with the QL language.

GitHub makes this program freely available for the analysis of open-source software and certain other uses, but it is
not itself free software. Type codeql --license to see the license terms.

      --license              Show the license terms for the CodeQL toolchain.
Common options:
  -h, --help                 Show this help text.
  -v, --verbose              Incrementally increase the number of progress messages printed.
  -q, --quiet                Incrementally decrease the number of progress messages printed.
Some advanced options have been hidden; try --help -v for a fuller view.
Commands:
  query     Compile and execute QL code.
  bqrs      Get information from .bqrs files.
  database  Create, analyze and process CodeQL databases.
  dataset   [Plumbing] Work with raw QL datasets.
  test      Execute QL unit tests.
  resolve   [Deep plumbing] Helper commands to resolve disk locations etc.
  execute   [Deep plumbing] Low-level commands that need special JVM options.
  version   Show the version of the CodeQL toolchain.
  generate  Generate formatted QL documentation.

Um Hilfe zu einem bestimmten Befehl zu ermöglichen, führen Sie codeql-Befehl <> --help aus. Beispiel:

codeql create --help

Um Hilfe zu Unterbefehlen zu erhalten, listen Sie sie hierarchisch auf, z. B.

codeql create language --help

Installieren der CodeQL-Pakete

Wählen Sie die Registerkarte für Ihre Build-Umgebung aus.

Verwenden Sie dieses Verfahren, wenn Sie Visual Studio 2022 17.8 oder höher mit WHCP_21H2 oder WHCP_22H2 und CodeQL CLI, Version 2.15.4, verwenden.

Hinweis

Wenn Sie CodeQL-Tests mit einer früheren Version von CodeQL ausgeführt haben, müssen Sie das alte CodeQL-Untermodul entfernen, wenn Sie noch über eine alte Version des geklonten Repositorys verfügen. CodeQL kann standardmäßig versuchen, die Abfragen im Untermodul zu verwenden, was aufgrund von nicht übereinstimmenden Versionen zu Fehlern führen kann.

Herunterladen der CodeQL-Abfragepakete

CodeQL führte CodeQL-Pakete (CodeQL-Pakete oder Abfragepakete) in Version 2.7.0 ein, ohne die Notwendigkeit, das Repository "Windows-Driver-Developer-Supplemental-Tools" zu klonen, um die Abfragen für die Zertifizierung zu verwenden.

Hinweis

Es ist möglich, Schritt 1 zu überspringen, da die --download Option alle erforderlichen Abfragen später beim Ausführen des Analyseprozesses herunterlädt.

  1. Laden Sie die richtige Version des Microsoft/Windows-Drivers Packs aus der Tabelle " Verwendung des Windows-Hardwarekompatibilitätsprogramms" herunter . Geben Sie den @<version> im folgenden Befehl an.
C:\codeql-home\> codeql pack download microsoft/windows-drivers@<version>

Wenn Sie z. B. WHCP_24H2 verwenden, führen Sie den folgenden Befehl aus, um das Abfragepaket 1.1.0 für Windows-Treiber herunterzuladen:

C:\codeql-home\> codeql pack download microsoft/windows-drivers@1.1.0

Verwenden Sie diesen Befehl, um Version 0.9.0 des CPP-Abfragepakets CodeQL herunterzuladen.

C:\codeql-home\> codeql pack download codeql/cpp-queries@0.9.0

CodeQL installiert die Abfragepakete im Standardverzeichnis:

C:\Users\<current user>\.codeql\packages\microsoft\windows-drivers\<downloaded version>\

Von Bedeutung

Ändern Sie das Installationsverzeichnis nicht, oder verschieben Sie das installierte Abfragepaket.

Herunterladen der Windows-Treiberabfragesammlungen

Microsoft bietet zwei Abfragesuiten, um den End-to-End-Treiber-Entwicklerworkflow zu vereinfachen. Die suite windows_driver_recommended.qls ist eine Obermenge aller Abfragen, die Microsoft für Treiberentwickler als nützlich erachtet, und windows_driver_mustfix.qls-Suite enthält Abfragen, die als "Must-Fix" für die WHCP-Zertifizierung gelten. windows_driver_mustfix.qls muss ausgeführt und bestanden werden, um den Logotest für statische Tools zu bestehen.

Kopieren Sie die beiden Abfragesuitedateien von https://github.com/microsoft/Windows-Driver-Developer-Supplemental-Tools/tree/main/suites auf Ihren lokalen PC.

  • windows_driver_recommended.qls
  • windows_driver_mustfix.qls

Details zum Inhalt der Abfragesammlungen finden Sie unter CodeQL-Abfragen und -Suites.

Erstellen der CodeQL-Datenbank

In diesen Beispielen wird davon ausgegangen, dass eine Windows-Entwicklungsumgebung verwendet wird und dass der Installationsspeicherort C:\codeql-home ist, Sie können jedoch das Setup verwenden, das Für Sie geeignet ist. Eine Liste der unterstützten Compiler finden Sie unter CodeQL-unterstützte Sprachen und Frameworks .

  1. Erstellen Sie ein Verzeichnis für CodeQL, um die erstellten Datenbanken zu platzieren. Beispiel: C:\codeql-home\databases

    mkdir C:\codeql-home\databases
    
  2. Verwenden Sie den CodeQL-Befehl, um eine Datenbank mit den folgenden Parametern zu erstellen:

    • Der erste Parameter ist ein Link zu Ihrem Datenbankverzeichnis. Beispiel: C:\codeql-home\databases\MyDriverDatabase. (Dieser Befehl schlägt fehl, wenn das Verzeichnis bereits vorhanden ist.)
    • --language oder -l gibt die Sprache oder Sprachen an, in der sich der Quellcode befindet. Dies kann eine durch Trennzeichen getrennte Liste sein, z. B. [cpp, javascript].
    • --source oder -s gibt den Pfad zum Quellcode an.
    • --command oder -c gibt den Buildbefehl oder den Pfad zu Ihrer Builddatei an.
    codeql database create <database directory> --language=<language> --source=<path to source code> --command=<build command or path to build file>
    

Beispiele

Beispiel für einen einzelnen Treiber.

C:\codeql-home\codeql> codeql database create D:\DriverDatabase --language=cpp --source-root=D:\Drivers\SingleDriver --command="msbuild /t:rebuild D:\Drivers\SingleDriver\SingleDriver.sln"

Beispiel für mehrere Treiber.

C:\codeql-home\codeql> codeql database create D:\SampleDriversDatabase --language=cpp --source-root=D:\AllMyDrivers\SampleDrivers --command=D:\AllMyDrivers\SampleDrivers\BuildAllSampleDrivers.cmd

Weitere Informationen oder Hilfe zur Verwendung des Befehls finden Sie in der database create Hilfe zum Erstellen von CodeQL-Datenbanken oder zur Verwendung von CodeQL.

Analyse durchführen

An diesem Punkt ist die Datenbankerstellung abgeschlossen, und der nächste Schritt besteht darin, die tatsächliche Analyse des Treiberquellcodes durchzuführen.

  1. Verwenden Sie den CodeQL-Befehl, um Ihre Datenbank mithilfe der folgenden Parameter zu analysieren:

    • Der erste Parameter ist ein Link zu Ihrem Datenbankverzeichnis. Beispiel : C:\codeql-home\databases\MyDriverDatabase. (Hinweis: Dieser Befehl schlägt fehl, wenn das Verzeichnis nicht vorhanden ist.)
    • --download flag weist CodeQL an, Abhängigkeiten herunterzuladen, bevor die Abfragen ausgeführt werden.
    • --format ist der Dateityp der Ausgabedatei. Zu den Optionen gehören: SARIF und CSV. (Für WHCP-Benutzer wird das SARIF-Format verwendet.)
    • --output ist der Pfad zum Speicherort der Ausgabedatei, achten Sie darauf, das Format in den Dateinamen einzuschließen. (Dieser Befehl schlägt fehl, wenn das Verzeichnis noch nicht vorhanden ist.)
    • Der Parameter "Abfragebezeichner" ist eine durch Leerzeichen getrennte Liste von Argumenten, die Folgendes enthalten können:
      • Pfad zu einer Abfragedatei
      • Pfad zu einem Verzeichnis, das Abfragedateien enthält
      • Pfad zu einer Abfragesuitedatei
      • der Name eines CodeQL-Abfragepakets
    codeql database analyze --download <path to database> <path to query suite .qls file> --format=sarifv2.1.0 --output=<outputname>.sarif
    

    Beispiel:

    codeql database analyze --download D:\DriverDatabase suites/windows\_driver_recommended.qls --format=sarifv2.1.0 --output=D:\DriverAnalysis1.sarif 
    

    Weitere Informationen oder Hilfe zur Verwendung des database analyze Befehls finden Sie unter Analysieren von Datenbanken mit der CodeQL CLI, Verwenden eines CodeQL-Pakets zum Analysieren einer CodeQL-Datenbank oder verwenden der CodeQL-Hilfe.

Anzeigen und Interpretieren von Ergebnissen

Wir konzentrieren uns auf das SARIF-Format für diesen Abschnitt, da es für die folgenden Schritte erforderlich ist, obwohl Sie das CSV-Format gerne verwenden können, wenn es Ihren Anforderungen besser entspricht.

Static Analysis Results Interchange Format (SARIF) ist ein JSON-Typformat, das für die Freigabe statischer Analyseergebnisse verwendet wird. Erfahren Sie mehr über den Standard bei OASIS Static Analysis Results Interchange Format (SARIF), wie CodeQL SARIF Output und das Schema json verwendet.

Es gibt mehrere Methoden zum Interpretieren der Analyseergebnisse, einschließlich der manuellen Sortierung durch die Objekte. Hier sind einige, die wir verwenden:

  • Der Microsoft Sarif Viewer (Web) verfügt über Funktionen, mit denen Sie Ihre SARIF-Datei in den Viewer ziehen und ablegen können. Anschließend werden ergebnisse nach Regel kategorisiert angezeigt. Dies ist eine sehr schnelle und einfache Möglichkeit, die Anzahl der Verstöße anzuzeigen oder zu sehen, welche Abfragen Verstöße haben, jedoch weniger einfach Quellcodeinformationen abgesehen von der Zeilennummer zu finden. Beachten Sie, dass die Seite nicht aktualisiert wird, wenn keine Verstöße vorliegen.

  • Der Microsoft SARIF Viewer für Visual Studio eignet sich hervorragend zum Anzeigen der Ergebnisse in Visual Studio für den nahtlosen Übergang von Ergebnissen zu Quellcode.

  • Die SARIF-Erweiterung für Visual Studio Code öffnet einen Vorschaubereich und zeigt alle Fehler, Warnungen oder Probleme an, die von CodeQL gemeldet wurden. Um die Sarif-Datei in einem lesbaren Format anzuzeigen, öffnen Sie die Datei in Visual Studio Code, und wählen Sie UMSCHALT-ALT-F aus.

Der wichtigste Abschnitt der SARIF-Datei ist die Results Eigenschaft innerhalb des Run Objekts. Jede Abfrage verfügt über eine Ergebniseigenschaft mit Details zu erkannten Verstößen und deren Auftreten. Wenn keine Verstöße gefunden werden, ist der Eigenschaftswert leer.

Abfragen werden mithilfe von Status wie Fehler, Warnung und Problem klassifiziert. Diese Klassifizierung unterscheidet sich jedoch davon, wie das Windows-Hardwarekompatibilitätsprogramm und der Logotest für statische Tools die Ergebnisse benoten. Alle Treiber mit Fehlern aus einer Abfrage innerhalb der Must-Fix-Suitebestehen nicht den Logotest für statische Tools und werden nicht zertifiziert, unabhängig von der Abfrageklassifizierung in der unformatierten Abfragedatei (z. B. Warnung).

Konvertieren von SARIF in das Treiberüberprüfungsprotokollformat (DVL)

Der Logotest für statische Tools analysiert ein Treiberüberprüfungsprotokoll (Driver Verification Log, DVL), das das kompilierte Ergebnis der statischen CodeQL-Analyse darstellt, die Sie im Treiberquellcode ausführen. Es gibt drei Möglichkeiten zum Konvertieren Ihrer SARIF-Datei in das DVL-Format: Visual Studio, MSBuild oder über die Befehlszeile mit dem tooldvl.exe . Vollständige Schritte finden Sie unter Erstellen eines Treiberüberprüfungsprotokolls.

Weitere Anweisungen zum HLK-Logotest für statische Tools sowie Hinweise, wo die DVL-Datei platziert werden kann, finden Sie unter Ausführen des Logotests für statische Tools.

Problembehandlung

Wenn Sie mit WHCP zertifizieren, stellen Sie zunächst sicher, dass Sie die HLK-Version verwenden, die mit der Windows-Version verknüpft ist, die Sie verwenden, die zugeordnete Verzweigung im Repository für Zusätzliche Tools für Windows-Treiberentwickler und die nachfolgende CodeQL CLI-Version. Informationen zur HLK/Windows-Release-Kompatibilitätsmatrix finden Sie unter Windows Hardware Lab Kit und zur Windows-Release/Windows-Driver-Developer-Supplemental-Tools-Repo-Zweig/CodeQL-CLI-Version in der WHCP-Tabelle im Abschnitt "CodeQL-Version auswählen".

Fehler und Problemumgehungen

Bei Problemen mit datenbankversionskonflikten können die folgenden Tools hilfreich sein.

Verwenden Sie den Codeql-Versionsbefehl, um die Version der codeql exe anzuzeigen.

C:\codeql-home\codeql\>codeql version
CodeQL command-line toolchain release 2.4.0.
Copyright (C) 2019-2020 GitHub, Inc.
Unpacked in: C:\codeql-home\codeql\
   Analysis results depend critically on separately distributed query and
   extractor modules. To list modules that are visible to the toolchain,
   use 'codeql resolve qlpacks' and 'codeql resolve languages'.

Der Befehl "Datenbankupgrade" aktualisiert eine Datenbank. Beachten Sie, dass dies ein einmaliges Upgrade ist und nicht rückgängig gemacht werden kann. Weitere Informationen finden Sie unter Datenbankupgrade.

Optionale Prozeduren

Optional können Sie CodeQL-Ergebnisse unterdrücken oder die Build- und Analyseprozeduren als Postbuildereignis in Visual Studio ausführen.

Unterdrücken von CodeQL-Ergebnissen

CodeQL für Treiber unterstützt das Unterdrücken von Ergebnissen. Unterdrückungen werden derzeit als Benutzerfreundlichkeit bereitgestellt, um Entwicklern das Triagen von Problemen zu erleichtern und Rauschen zu reduzieren, nicht als Möglichkeit, die Must-Fix-Prüfungen zu umgehen. Sie haben im Moment keine Auswirkungen auf die Erstellung eines Treiberprüfungsprotokolls oder auf das Bestehen des statischen Tool-Logotests. Um Unterdrückungen zu verwenden, müssen Sie die DriverAlertSuppression.ql-Abfrage gleichzeitig mit den anderen Abfragen oder Suites ausführen, die Sie ausführen möchten. Diese Abfrage ist standardmäßig aktiviert, wenn unsere Suites über unsere githubs main/development branch ausgeführt werden.

Bei Überprüfungen, die aus der Codeanalyse portiert wurden, werden vorhandene Codeanalyseunterdrückungen berücksichtigt. Weitere Informationen finden Sie unter C++-Warnungs pragma.

  • Known limitation: Sie können derzeit keine #pragma(disable) und #pragma(suppress) in derselben Zeile kombinieren.

Für CodeQL-Überprüfungen, die neu sind, unterdrücken Sie sie, indem Sie eine der beiden folgenden Optionen ausführen:

  • Schreiben Sie eine #pragma(suppress:the-rule-id-here) Anmerkung (ohne Anführungszeichen) in der Zeile oberhalb der Verletzung, wie Sie für die Codeanalyse tun. Ersetzen Sie "the-rule-id-here" durch den Wert in den @id Metadaten der Abfrage, der oben in der Datei angezeigt werden kann.

  • Schreiben Sie einen Kommentar in der obigen Zeile, die aus dem Text "lgtm[the-rule-id-here]" (minus Anführungszeichen) besteht. Sie müssen die standardmäßige C/C++-Warnungsunterdrückungsabfrage anstelle der Treiberbenachrichtigungsunterdrückungsabfrage ausführen.

Sobald eine Unterdrückung vorhanden und erkannt wurde, enthält die resultierende SARIF-Datei Daten, dass ein Ergebnis unterdrückt wurde, und die meisten Ergebnisanzeige-Tools zeigen dieses Ergebnis standardmäßig nicht an.

Visual Studio Nach-Build-Ereignis

Wenn Sie den Treiber mit Visual Studio erstellen, können Sie CodeQL-Abfragen so konfigurieren, dass sie als Postbuildereignis ausgeführt werden.

In diesem Beispiel wird eine kleine Batchdatei am Zielspeicherort erstellt und als Ereignis nach dem Build aufgerufen. Weitere Informationen zu Visual Studio C++-Buildereignissen finden Sie unter Angeben von Buildereignissen.

  1. Erstellen Sie eine kleine Batchdatei, die die CodeQL-Datenbank neu erstellt, und führen Sie dann die gewünschten Abfragen darauf aus. In diesem Beispiel wird die Batchdatei benannt RunCodeQLRebuildQuery.bat. Ändern Sie die in der Beispielbatchdatei angezeigten Pfade so, dass sie ihren Verzeichnisspeicherorten entsprechen.

    ECHO ">>> Running CodeQL Security Rule V 1.0 <<<"
    ECHO ">>> Removing previously created rules database <<<"
    rmdir /s/q C:\codeql-home\databases\kmdf
    CALL C:\codeql-home\codeql\codeql\codeql.cmd database create -l=cpp -s="C:\codeql-home\drivers\kmdf" -c "msbuild /p:Configuration=Release /p:Platform=x64 C:\codeql-home\drivers\kmdf\kmdfecho.sln /t:rebuild /p:PostBuildEventUseInBuild=false " "C:\codeql-home\databases\kmdf" -j 0
    CALL C:\codeql-home\codeql\codeql\codeql database analyze "C:\codeql-home\databases\kmdf" "<path to query suite .qls file>" --format=sarifv2.1.0 --output=C:\codeql-home\databases\kmdf.sarif -j 0 --rerun
    ECHO ">>> Loading SARIF Results in Visual Studio <<<"
    CALL devenv /Edit C:\codeql-home\databases\kmdf.sarif
    SET ERRORLEVEL = 0
    
  2. Die Optiondevenv.exe/Bearbeiten wird in der Batchdatei verwendet, um die SARIF-Ergebnisdatei in der vorhandenen Instanz von Visual Studio zu öffnen. Um die SARIF-Ergebnisse anzuzeigen, installieren Sie den Microsoft SARIF Viewer für Visual Studio und lesen Sie die Anweisungen dort, um weitere Informationen zu erhalten.

  3. Navigieren Sie im Treiberprojekt zu Projekteigenschaften. Wählen Sie im Pulldown "Konfiguration " die Buildkonfiguration aus, die Sie mit CodeQL überprüfen möchten. Wir empfehlen Release. Das Erstellen der CodeQL-Datenbank und das Ausführen der Abfragen dauert einige Minuten, daher wird nicht empfohlen, CodeQL für die Debugkonfiguration Ihres Projekts auszuführen.

  4. Wählen Sie Build-Ereignisse und Post-Build-Ereignis in den Eigenschaften des Treiberprojekts aus.

  5. Geben Sie einen Pfad zur Batchdatei und eine Beschreibung des Postbuildereignisses an.

Visual Studio-Konfiguration nach dem Buildereignis mit einer Batchdatei, die als Befehlszeilenoption konfiguriert ist.

  1. Die Ergebnisse der Batchdatei werden am Ende der Buildausgabe angezeigt.

    1>Starting evaluation of codeql-cpp\Likely Bugs\Underspecified Functions\MistypedFunctionArguments.ql.
    1>Starting evaluation of codeql-cpp\Likely Bugs\Underspecified Functions\TooManyArguments.ql.
    1>Starting evaluation of codeql-cpp\Likely Bugs\Underspecified Functions\TooFewArguments.ql.
    1>Starting evaluation of codeql-cpp\Likely Bugs\Underspecified Functions\ImplicitFunctionDeclaration.ql.
    1>[1/4 eval 4.4s] Evaluation done; writing results to codeql-cpp\Likely Bugs\Underspecified Functions\TooManyArguments.bqrs.
    1>[2/4 eval 4.4s] Evaluation done; writing results to codeql-cpp\Likely Bugs\Underspecified Functions\TooFewArguments.bqrs.
    1>[3/4 eval 4.5s] Evaluation done; writing results to codeql-cpp\Likely Bugs\Underspecified Functions\ImplicitFunctionDeclaration.bqrs.
    1>[4/4 eval 5.2s] Evaluation done; writing results to codeql-cpp\Likely Bugs\Underspecified Functions\MistypedFunctionArguments.bqrs.
    1>Shutting down query evaluator.
    1>Interpreting results.
    1>">>> Loading SARIF Results in Visual Studio <<<"