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.

Note

Visual Studio (VS) 17.8 ist nicht mehr kompatibel mit älteren Versionen von CodeQL, 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 zertifizieren, gemäß der folgenden Tabelle.

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 Version des CodeQL-Pakets für Microsoft/cpp-Abfragen codeql/cpp-queries version Zugeordneter Zweig
Windows Server 2022 2.4.6 oder 2.15.4 1.0.13 (Wenn Codeql 2.15.4 verwendet wird) N/A 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) N/A 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) N/A 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) N/A 0.9.0 (Wenn Codeql 2.15.4 verwendet wird) WHCP_22H2
Windows 11, Version 24H2 2.15.4 1.1.0 N/A 0.9.0 WHCP_24H2
Windows Server 2025 2.20.1 1.8.0 0.0.4 N/A WHCP_25H2
Windows 11, Version 25H2 2.20.1 1.8.0 0.0.4 N/A WHCP_25H2
Windows 11, Version 26H1 2.24.1 1.8.2 0.0.4 N/A WHCP_26H1

Note

Eine Version des CodeQL-Pakets wird für CodeQL CLI 2.4.6 und 2.6.3 nicht angegeben, da nur Versionen von CodeQL höher als v2.7.0 CodeQL-Pakete unterstützen.

CodeQL-Versionen, die für die Verwendung mit WHCP überprüft wurden

Die neuesten Versionsinformationen, einschließlich tests der neuesten Entwicklung, finden Sie unter Zusätzliche Tools für Windows-Treiberentwickler.

CodeQL CLI-Version
2.24.1
2.23.3
2.21.4
2.21.2
2.20.1
2.15.4

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, andernfalls verwenden Sie "Main Branch" und die Version der CLI, die in der GitHub README oder der vorherigen Tabelle "für die allgemeine Verwendung" aufgeführt ist. 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 von Ihnen 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 für die WHCP-Zertifizierung für 21H2 oder höher und CodeQL CLI Version 2.15.4 oder höher verwenden.

Note

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.

  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 beispielsweise für WHCP 26H1 zertifiziert sind, führen Sie den folgenden Befehl aus, um das Abfragepaket für Windows-Treiber 1.8.2 herunterzuladen:

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

Verwenden Sie diesen Befehl, um Version 0.0.4 des Abfragepakets für Microsoft cpp-Abfragen herunterzuladen.

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

CodeQL installiert die Abfragepakete im Standardverzeichnis:

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

Important

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

Microsoft bietet drei Abfragesuiten, um den End-to-End-Treiber-Entwicklerworkflow zu vereinfachen. Diese Suites sind im CodeQL-Paket von Microsoft/windows-drivers enthalten.

  • recommended.qls enthält eine breite Palette von Überprüfungen auf allgemeine Treiber- und C/C++-Fehler. Wir empfehlen, diese Suite standardmäßig auszuführen und Ergebnisse zu überprüfen.
  • mustrun.qls enthält Prüfungen, die ausgeführt werden müssen , um die WHCP-Zertifizierung (Windows Hardware Compatibility Program) zu bestehen. Da diese Abfragen in einigen Fällen zu falsch positiven Ergebnissen führen können, führt das Nichtbestehen dieser Prüfungen nicht dazu, dass der Logotest für statische Tools scheitert, aber Entwickler sollten die Ergebnisse überprüfen und echte Fehler beheben. Eine DVL, die ohne Ergebnisse für diese Prüfungen generiert wurde, schlägt den Logotest für statische Tools fehl. Für 26H1 sind mustrun.qls und recommended.qls identisch.
  • mustfix.qls dient als Teilmenge der must-run-Abfragen und enthält Prüfungen, die Probleme melden, die behoben werden müssen , um die WHCP-Zertifizierung zu bestehen. Eine DVL, die durch Verstöße gegen diese Regeln generiert wurde, besteht den Logotest für statische Tools nicht.

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. Dieser Parameter kann eine durch Trennzeichen getrennte Liste sein, z. B. [cpp, javascript].
    • --source-root oder -s gibt den Pfad zum Quellcode an.
    • --command oder -c gibt den Buildbefehl oder den Pfad zu Ihrer Builddatei an.
    codeql database create <path to new database> --language=<cpp> --source-root=<driver parent directory> --command=<build command or path to build file>
    

Examples

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.)
    • --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 <path to database> <path to query suite .qls file> --format=sarifv2.1.0 --output=<outputname>.sarif
    

    Example:

    codeql database analyze D:\DriverDatabase microsoft/windows-drivers:windows-driver-suites/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

Dieser Abschnitt konzentriert sich auf das Generieren und Interpretieren von Ergebnissen im SARIF-Format. Andere Ergebnisformate wie CSV sind verfügbar, werden jedoch vom Logotest für statische Tools nicht unterstützt.

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. Dieser Viewer bietet eine schnelle und einfache Möglichkeit, die Anzahl der Verstöße zu sehen oder herauszufinden, welche Abfragen Verstöße enthalten. Er liefert jedoch nur begrenzte Informationen darüber, wo im Quellcode der Verstoß aufgetreten ist. Die Seite wird nicht aktualisiert, 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 Results-Eigenschaft 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 für den Static Tools Logo Hardware Lab Kit (HLK) Test und die Platzierung der DVL-Datei finden Sie unter Ausführen des Logotests für statische Tools.

Troubleshooting

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 Datenbankupgradebefehl aktualisiert eine Datenbank. Dieses Upgrade ist eine Möglichkeit und kann nicht rückgängig gemacht werden. 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.

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

  • Known limitation: Sie können derzeit keine #pragma(deaktivieren) und #pragma(unterdrücken) 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, die anzeigen, dass ein Ergebnis unterdrückt wird. Die meisten Ergebnisanzeigen zeigen standardmäßig keine unterdrückten Ergebnisse 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, mit der die CodeQL-Datenbank neu erstellt wird, 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 <<<"