Freigeben über


Codeüberprüfung

Mit der Codeüberprüfung in GitHub Advanced Security für Azure DevOps können Sie den Code in einem Azure DevOps-Repository analysieren, um Sicherheitsrisiken und Codierungsfehler zu finden. Alle durch die Analyse identifizierten Probleme werden als Warnung ausgegeben. Die Codeüberprüfung verwendet CodeQL, um Sicherheitsrisiken zu identifizieren.

CodeQL ist die Codeanalyse-Engine, die von GitHub entwickelt wurde, um Sicherheitsüberprüfungen zu automatisieren. Sie können Ihren Code mithilfe von CodeQL analysieren und die Ergebnisse als Codescanwarnungen anzeigen. Eine spezifischere Dokumentation zu CodeQL finden Sie in der CodeQL-Dokumentation.

GitHub Advanced Security für Azure DevOps funktioniert mit Azure Repos. Wenn Sie GitHub Advanced Security mit GitHub-Repositorys verwenden möchten, lesen Sie GitHub Advanced Security.

Zusätzliche Konfigurationen für die Codeüberprüfung

Sprachen- und Abfrageunterstützung

GitHub-Experten, Sicherheitsexperten und Mitwirkende der Community schreiben und verwalten die CodeQL-Standardabfragen, die für die Codeüberprüfung verwendet werden. Die Abfragen werden regelmäßig aktualisiert, um die Analyse zu verbessern und falsch positive Ergebnisse zu verringern. Die Abfragen sind Open-Source-Code, d. h. Sie können die Abfragen im github/codeql-Repository einsehen und zu ihnen beitragen.

CodeQL unterstützt und verwendet folgende Sprachbezeichner:

Sprache Identifier Optionale alternative Bezeichner (falls vorhanden)
C/C++ c-cpp c oder cpp
C# csharp
OK go
Java/Kotlin java-kotlin
JavaScript/TypeScript javascript
Python python
Ruby ruby
Swift swift

Tipp

  • Verwenden Sie c-cpp zum Analysieren von Code, der in C und/oder in C++ geschrieben wurde.
  • Verwenden Sie java-kotlin zum Analysieren von Code, der in Java, Kotlin oder beiden Sprachen geschrieben wurde.
  • Verwenden Sie javascript zum Analysieren von Code, der in JavaScript, TypeScript oder beiden Sprachen geschrieben wurde.

Weitere Informationen finden Sie unter Unterstützte Sprachen und Frameworks.

Die spezifischen Abfragen und Aufgabendetails der Ausführung durch CodeQL können Sie sich im Buildprotokoll ansehen.

Screenshot: Aufgabe zur Veröffentlichung der Ergebnisse der Codeüberprüfung

Buildmodusanpassung für die Codeüberprüfung

Bei der Einrichtung einer Pipeline für die Überprüfung unterstützt die Codeüberprüfung zwei Buildmodi:

  • none: Die CodeQL-Datenbank wird direkt auf der Grundlage der Codebasis erstellt, ohne die Codebasis zu erstellen. (Dies wird für alle interpretierten Sprachen und zusätzlich für C# und Java unterstützt.)
  • manual – Sie definieren die Build-Schritte, die für die Codebasis im Workflow verwendet werden sollen (unterstützt für alle kompilierten Sprachen).

Weitere Informationen zu den verschiedenen Buildmodi sowie einen Vergleich der Vorteile der einzelnen Buildmodi finden Sie in den Informationen zum CodeQL-Analyseworkflow und zu kompilierte Sprachen.

Bei der Ausführung der Codeüberprüfungsanalyse über GitHub Advanced Security für Azure DevOps ist der Buildmodus autobuild stattdessen eine separate Buildaufgabe (AdvancedSecurity-CodeQL-Autobuild@1).

Tipp

Der Buildmodus none kann in Verbindung mit anderen interpretierten Sprachen (z. B. JavaScript, Python, Ruby) verwendet werden. Wenn der Buildmodus none für C# oder Java in Verbindung mit anderen kompilierten Sprachen angegeben wird, die den Buildmodus none nicht unterstützen, ist die Pipelineaufgabe nicht erfolgreich.

Hier sehen Sie ein Beispiel für eine gültige Konfiguration mit mehreren Sprachen und dem Buildmodus none:

trigger: none
 
pool:
  vmImage: windows-latest

steps:
- task: AdvancedSecurity-Codeql-Init@1
  displayName: Initialize CodeQL
  inputs:
# build mode `none` is supported for C# and Java, and JavaScript is an interpreted language
# and build mode `none` has no impact on JavaScript analysis
    languages: 'csharp, java, javascript' 
    buildtype: 'none'

- task: AdvancedSecurity-Codeql-Analyze@1
  displayName: Perform CodeQL Analysis

Hier sehen Sie ein Beispiel für eine ungültige Konfiguration mit mehreren Sprachen und dem Buildmodus none:

trigger: none
 
pool:
  vmImage: windows-latest

steps:
- task: AdvancedSecurity-Codeql-Init@1
  displayName: Initialize CodeQL
  inputs:
# build mode `none` is supported for C# but build mode `none` is NOT supported for Swift
# so this pipeline definition will result in a failed run
    languages: 'csharp, swift'
    buildtype: 'none'

- task: AdvancedSecurity-Codeql-Analyze@1
  displayName: Perform CodeQL Analysis

Verwenden benutzerdefinierter Abfragen mit CodeQL

Wenn in Ihrem Pipelinesetup keine benutzerdefinierte Konfigurationsdatei angegeben ist, führt CodeQL zur Analyse Ihres Codes standardmäßig das Abfragepaket security-extended aus. Sie können benutzerdefinierte CodeQL-Abfragen verwenden, um eigene Abfragen zur Suche nach bestimmten Sicherheitsrisiken und Fehlern zu schreiben. Sie müssen auch eine benutzerdefinierte Konfigurationsdatei erstellen, um die CodeQL-Standardanalyse zu ändern.

Informationen zur Suche nach vorhandenen benutzerdefinierten Abfragen oder zum Schreiben Ihrer eigenen benutzerdefinierten Abfragen finden Sie unter Eigene CodeQL-Abfrage schreiben.

Analyse mit benutzerdefinierten Abfragen

Am schnellsten können Sie mit einer benutzerdefinierten Abfrage beginnen, indem Sie eine Abfrage schreiben und diese in Ihrem lokalen Azure DevOps-Repository speichern. Sie können eine benutzerdefinierten Abfrage entsprechend Ihrer Anforderung anpassen, sie muss jedoch mindestens eine Regel-ID beinhalten. Weitere Informationen zum Schreiben Ihrer eigenen CodeQL-Abfrage finden Sie unter CodeQL-Abfragen schreiben. Sie können auch mehrere Abfragen in einer Abfragesammlung bündeln oder von anderen Personen veröffentlichte Pakete verwenden. Weitere Informationen finden Sie unter Veröffentlichen und Verwenden von CodeQL-Paketen.

Verwenden einer benutzerdefinierten Konfigurationsdatei

Mithilfe einer benutzerdefinierten Konfigurationsdatei können Sie bestimmen, welche Abfragen während der CodeQL-Analyse ausgeführt werden sollen. Sie können festlegen, welche weiteren Abfragen oder Abfragepakete ausgeführt werden sollen, und die standardmäßigen CodeQL-Abfragen ändern oder deaktivieren.

Um eine bestimmte Abfrage einzuschließen, geben Sie für die Abfrage einen Namen sowie einen Pfad an, der zu dem Ort führt, an dem die Abfragedatei (.ql) in Ihrem Repository gespeichert ist.

Um ein bestimmtes Paket einzuschließen, geben Sie den Namen des Pakets an. Sie können eine beliebige Anzahl von CodeQL-Abfragepaketen angeben, die in Ihrer Konfigurationsdatei ausgeführt werden sollen.

Im nächsten Schritt wird eine qlpack.yml Datei erstellt. Diese Datei deklariert das CodeQL-Paket und Informationen darüber. Alle *.ql Dateien im selben Verzeichnis (oder Unterverzeichnis) als qlpack.yml gelten als Teil des Pakets.

Tipp

Der packs Filter aus der Konfigurationsdatei unterstützt das Herunterladen von Paketen aus Repositorys, die in GitHub gehostet werden, der queries-Filter macht dies nicht. Wenn das Paket in GitHub privat ist, müssen Sie über die Aufgabe AdvancedSecurity-Codeql-Init@1 ein GitHub-Zugriffstoken als Umgebungsvariable und einen Variablennamen als GITHUB_TOKEN bereitstellen und den Gültigkeitsbereich des Tokens auf read:packages festlegen.

Hier sehen Sie eine Beispielkonfigurationsdatei:

name: "Run custom queries"

# When using a configuration file, if you do not disable default queries,
# then the default CodeQL queries in the `code-scanning` query suite will also execute upon analysis.
disable-default-queries: true
 
# To reference local queries saved to your repository,
# the path must start with `./` followed by the path to the custom query or queries.
# Names for each query referenced is optional.
queries:
  - name: Use security-extended query suite
    uses: security-extended
  - name: Use local custom query (single query)
    uses: ./customQueries/javascript/FindTestFunctions.ql
  - name: Use local custom query (directory of queries)
    uses: ./customQueries/javascript/MemoryLeakQueries  
 
packs:
 - mygithuborg/mypackname
 
paths:
 - src
 
paths-ignore:
  - src/node_modules
  - '**/*.test.js'
 
query-filters:
 - include:
    kind: problem
 - include:
     precision: medium
 - exclude:
    id:
      - js/angular/disabling-sce
      - js/angular/insecure-url-allowlist

Tipp

Konfigurationsdateispezifikationen ignorieren Konfigurationen auf Pipelineebene für die Aufgabe AdvancedSecurity-Codeql-Init@1 und haben diesen gegenüber Vorrang. includepaths / ignorepaths werden ignoriert, oder, wenn paths/paths-ignore vorhanden sind, werden sie mit Werten aus paths/paths-ignore überschrieben. querysuite wird mit Werten aus queries oder mit packs aus der Konfigurationsdatei überschrieben.

Wenn Sie eine benutzerdefinierte Abfrage verwenden, sehen Sie hier ein Beispiel qlpack.yml im Verzeichnis Ihrer benutzerdefinierten Abfragen:

version: 1.0.1
dependencies:
  codeql/javascript-all: "*"
  codeql/javascript-queries: "*"

Die dependencies Variable enthält alle Abhängigkeiten dieses Pakets und deren kompatible Versionsbereiche. Jede Abhängigkeit wird als Teil eines scope/name CodeQL-Bibliothekspakets verwiesen. Beim Definieren dependencieshängt Ihr qlpack.yml von genau einem der wichtigsten Sprachpakete (z. B. JavaScript, C#, Ruby usw.) ab, die die Sprache bestimmt, die Ihre Abfrage analysieren kann.

Weitere spezifische Empfehlungen und Konfigurationsoptionen für Ihre Konfigurationsdatei finden Sie unter Anpassen der erweiterten Einstellungen für das Scannen von Codes oder qlpack.ymlunter CodeQL-Paketstruktur.

Sobald Sie über Ihre Konfigurationsdatei verfügen, müssen Sie Ihre Pipeline anpassen, indem Sie eine CodeQL-Analyse ausführen, um Ihre neue Datei verwenden zu können. Hier ist eine Beispielpipeline, die auf eine Konfigurationsdatei zeigt:

trigger: none
 
pool:
  vmImage: windows-latest

# You can either specify your CodeQL variables in a variable block... 
variables:
# `configfilepath` must be an absolute file path relative to the repository root
  advancedsecurity.codeql.configfilepath: '$(build.sourcesDirectory)/.pipelines/steps/configfile.yml' 

# Or you can specify variables as variables for the task. You do not need both definitions. 
steps:
- task: AdvancedSecurity-Codeql-Init@1
  displayName: Initialize CodeQL
  inputs:
    languages: 'javascript'
    loglevel: '2'
    configfilepath: '$(build.sourcesDirectory)/.pipelines/steps/configfile.yml'
# If downloading a pack from GitHub,
# you must include a GitHub access token with the scope of `read:packages`.
  env:
    GITHUB_TOKEN: $(githubtoken)

- task: AdvancedSecurity-Codeql-Analyze@1
  displayName: Perform CodeQL Analysis

Codescanwarnungen

Die Warnungen der Codeüberprüfung von GitHub Advanced Security für Azure DevOps enthalten Codeüberprüfungsflags nach Repository, die bei Anwendungsrisiken auf Codeebene warnen.

Um Codeüberprüfung zu verwenden, müssen Sie zunächst GitHub Advanced Security für Azure DevOps konfigurieren.

Die Registerkarte „Advanced Security“ unter „Repos“ in Azure DevOps ist der Hub zum Anzeigen Ihrer Codeüberprüfungswarnungen. Wählen Sie die Registerkarte Code scanning (Codeüberprüfung) aus, um Überprüfungswarnungen anzuzeigen. Sie können nach Branch, Zustand, Pipeline, Regeltyp und Schweregrad filtern. Zurzeit werden im Warnungshub keine Warnungen für die abgeschlossene Überprüfung von PR-Verzweigungen angezeigt.

Es hat keine Auswirkungen auf die Ergebnisse, wenn Pipelines oder Branches umbenannt werden. Es kann bis zu 24 Stunden dauern, bis der neue Name angezeigt wird.

Wenn Sie benutzerdefinierte CodeQL-Abfragen ausführen, wird aus den verschiedenen Abfragepaketen standardmäßig kein separater Filter für Warnungen generiert. Sie können nach Regel filtern, die für jede Abfrage eindeutig ist.

Screenshot: Codeüberprüfungswarnungen für ein Repository

Wenn Sie Advanced Security für Ihr Repository deaktivieren, verlieren Sie den Zugriff auf die Ergebnisse auf der Registerkarte „Advanced Security“ und den Buildtask. Der Buildtask schlägt nicht fehl, aber alle Ergebnisse von Builds, die mit dem Task ausgeführt werden, während Advanced Security deaktiviert ist, werden ausgeblendet und nicht beibehalten.

Warnungsdetails

Wählen Sie eine Warnung aus, um weitere Details zu erhalten, einschließlich Anleitungen zur Behebung. Jede Warnung enthält einen Speicherort, eine Beschreibung, ein Beispiel und einen Schweregrad.

Screenshot: Details der Codeüberprüfungswarnung

Abschnitt Erklärung
Location Im Abschnitt Locations (Speicherorte) wird eine bestimmte Instanz beschrieben, in der CodeQL ein Sicherheitsrisiko erkannt hat. Wenn es mehrere Instanzen Ihres Codes gibt, die gegen dieselbe Regel verstoßen, wird für jeden einzelnen Speicherort eine neue Warnung generiert. Die Karte „Locations“ (Speicherorte) enthält einen direkten Link zum betroffenen Codeschnipsel, damit Sie den Codeschnipsel auswählen können, der zur Bearbeitung an die Azure DevOps-Webbenutzeroberfläche weitergeleitet werden soll.
BESCHREIBUNG Die Beschreibung wird vom CodeQL-Tool basierend auf dem Problem bereitgestellt.
Empfehlung Die Empfehlung ist die empfohlene Korrektur für eine bestimmte Codeüberprüfungswarnung.
Beispiel Der Beispielabschnitt zeigt ein vereinfachtes Beispiel für die identifizierte Schwachstelle in Ihrem Code.
severity Schweregrade können niedrig, mittel, hoch oder kritisch sein. Dies Bewertung des Schweregrads basiert auf der angegebenen CVSS-Bewertung (Common Vulnerability Scoring System) für die identifizierte CWE (Common Weakness Enumeration). Weitere Informationen zur Bewertung des Schweregrads finden Sie in diesem GitHub-Blogbeitrag.

Anzeigen von Warnungen für ein Repository

Jede Person mit der Berechtigung „Mitwirkender“ für ein Repository kann eine Zusammenfassung aller Warnungen für ein Repository auf der Registerkarte „Advanced Security“ unter „Repositorys“ anzeigen. Wählen Sie die Registerkarte Code scanning (Codeüberprüfung) aus, um alle Geheimnisüberprüfungswarnungen anzuzeigen.

Um Ergebnisse anzuzeigen, müssen zuerst Codeüberprüfungstasks ausgeführt werden. Sobald die erste Überprüfung abgeschlossen wurde, werden alle erkannten Sicherheitsrisiken auf der Registerkarte „Advanced Security“ angezeigt.

Standardmäßig werden auf der Warnungsseite Ergebnisse der Abhängigkeitsüberprüfung für den Standardbranch des Repositorys angezeigt.

Die Status einer bestimmten Warnung gibt den Status für den Standardbranch und die zuletzt ausgeführte Pipeline an, auch wenn die Warnung für andere Branches und Pipelines vorhanden ist.

Schließen von Codeüberprüfungswarnungen

Zum Schließen von Warnungen benötigen Sie entsprechende Berechtigungen. Standardmäßig können nur Projektadministratoren Advanced Security-Warnungen schließen.

So schließen Sie eine Warnung:

  1. Navigieren Sie zu der Warnung, die Sie schließen möchten, und wählen Sie sie aus.
  2. Wählen Sie die Dropdownliste Close alert (Warnung schließen) aus.
  3. Falls noch nicht ausgewählt, wählen Sie als Schließungsgrund entweder Risk accepted (Risiko akzeptiert) oder False positive (Falsch positiv) aus.
  4. Fügen Sie dem Textfeld Comment (Kommentar) einen optionalen Kommentar hinzu.
  5. Wählen Sie Close (Schließen) aus, um die Warnung zu übermitteln und zu schließen.
  6. Der Warnungsstatus ändert sich aus Open (Offen) in Closed (Geschlossen), und Ihr Schließungsgrund wird angezeigt.

Screenshot: Schließen einer Codeüberprüfungswarnung

Diese Aktion schließt die Warnung nur für Ihren ausgewählten Branch. Andere Branches, die dasselbe Sicherheitsrisiko enthalten, bleiben aktiv, bis sie geschlossen werden. Alle Warnungen, die zuvor geschlossen wurden, können manuell erneut geöffnet werden.

Verwalten von Codeüberprüfungswarnungen bei Pull Requests

Wenn Warnungen für neue Codeänderungen in einem Pull Request erstellt werden, wird die Warnung als Anmerkung im Kommentarabschnitt des Pull Request auf der Registerkarte „Übersicht“ und als Warnung auf der Repositoryregisterkarte „Advanced Security“ mit einem neuen Branchauswahlergebnis für den Pull Request-Branch gemeldet.

Sie können die betroffenen Codezeilen und eine Zusammenfassung der Suche anzeigen und die Anmerkung im Abschnitt „Übersicht“ auflösen.

Screenshot: Anmerkung zum aktiven Pull Request für Code

Um Pull Request-Warnungen zu schließen, müssen Sie zur Warnungsdetailansicht navigieren, um die Warnung zu schließen und die Anmerkung aufzulösen. Andernfalls löst einfach das Ändern des Kommentarstatus (1) die Anmerkung auf, schließt oder behebt die zugrunde liegende Warnung jedoch nicht.

Screenshot: Anmerkung zum geschlossenen Pull Request für Code

Um den gesamten Satz von Ergebnissen für Ihren Pull Request-Branch anzuzeigen, navigieren Sie zu Repos>Advanced Security, und wählen Sie den Pull Request-Branch aus. Wenn Sie in der Anmerkung Weitere Details anzeigen (2) auswählen, werden Sie zur Warnungsdetailansicht auf der Registerkarte „Advanced Security“ weitergeleitet.

Tipp

Anmerkungen werden nur erstellt, wenn die betroffenen Codezeilen hinsichtlich des Pull Request-Unterschieds völlig einzigartig sind.

Problembehandlung bei der Codeüberprüfung

Wenn bei der CodeQL-Ausführung Fehler auftreten, meldet die CodeQL-CLI den Status der ausgeführten Befehle normalerweise als Exitcode. Der Exitcode stellt Informationen für nachfolgende Befehle oder für andere Tools bereit, die von der CodeQL-CLI abhängen. Weitere Informationen zu Exitcodes finden Sie unter Exitcodes.

Fehler: CodeQL-Befehl 'database finalize' (32)

Dieser Fehler weist auf ein Problem beim Abschließen der CodeQL-Datenbankerstellung hin, möglicherweise aufgrund von Extraktionsfehlern oder fehlenden Buildschritten.

Schritte zur Problembehandlung:

  1. Überprüfen, ob der Code vorhanden ist und kompiliert wird
    • Überprüfen Sie für kompilierte Sprachen, ob der Buildprozess Code kompiliert und zwischen den Tasks AdvancedSecurity-Codeql-Init und AdvancedSecurity-Codeql-Analyze ausgeführt wird. Allgemeine Buildbefehle und erforderliche Flags (z. B. clean no-cache/no-daemon) finden Sie unter Angeben von Buildbefehlen.
    • Vergewissern Sie sich bei interpretierten Sprachen, dass sich Quellcode für die angegebene Sprache im Projekt befindet.
  2. Überprüfen von Extraktionsfehlern
    • Überprüfen Sie, ob sich Extraktionsfehler auf die Integrität der CodeQL-Datenbank auswirken.
    • Überprüfen Sie die Protokolldatei auf Extraktionsfehler und Warnungen, um die grundsätzliche Integrität der Datenbank zu beurteilen.
  3. Untersuchen übergreifender Fehler
    • Wenn für die meisten Dateien Extraktorfehler auftreten, müssen Sie die Ursache der Extraktionsprobleme ermitteln.

Fehler: AutoBuild-Skript (1)

Dieser Fehler beschreibt einen automatischen Buildfehler und deutet auf ein Problem mit der Einrichtung oder Konfiguration der Codeüberprüfung hin.

Schritte zur Problembehandlung:

  1. Konfigurieren der Buildschritte

Fehler: CodeQL-Verzeichnisse konnten im Agent-Toolcache nicht gefunden werden

Dieser Fehler weist auf ein Problem mit der Installation von CodeQL für selbstgehostete Agents hin.

Schritte zur Problembehandlung:

  1. Informationen zu Setuprichtlinien und Konfigurationsskripts finden Sie unter Konfigurieren von GitHub Advanced Security für Azure DevOps.

Fehler: Sprachenpipelinevariable nicht festgelegt

Dieser Fehler tritt auf, wenn Sie CodeQL ausführen, ohne die Pipelinevariable festzulegen, die angibt, welche Sprachen gescannt werden sollen.

Schritte zur Problembehandlung:

  1. Festlegen der Sprachpipelinevariable

CodeQL gibt keine Ergebnisse zurück

Dieser Abschnitt enthält Anleitungen für den Fall, dass CodeQL-Analysen keine Ergebnisse liefern.

Schritte zur Problembehandlung:

  1. Überprüfen auf erkannte Sicherheitsrisiken
    • Berücksichtigen Sie die Möglichkeit, dass der Code möglicherweise keine Sicherheitsrisiken aufweist. Wenn Sicherheitsrisiken erwartet, aber nicht erkannt werden, setzen Sie die Überprüfung fort.
  2. Überprüfen der Abfragesammlungskonfiguration
    • Ermitteln Sie die verwendete Abfragesammlung und erwägen Sie bei Bedarf, zu einer umfassenderen Sammlung zu wechseln.
    • Alternativ können benutzerdefinierte Abfragesammlungen für eine maßgeschneiderte Analyse erstellt werden.
  3. Anpassen der Berechtigungen zum Anzeigen von Ergebnissen
    • Stellen Sie sicher, dass mindestens auf der Ebene der Mitwirkenden die richtigen Berechtigungen für den Zugriff auf Analyseergebnisse gewährt werden. Weitere Informationen finden Sie unter Erweiterte Sicherheitsberechtigungen.

CodeQL-Zeitüberschreitung

Wenn die AdvancedSecurity-Codeql-Analyze@1 Aufgabe angezeigt This job was abandoned ... we lost contact with the agent wird und Sie einen gehosteten Microsoft-Agent verwenden, trifft die Aufgabe das integrierte sechsstündige Timeout für kostenpflichtige gehostete Agents. Sie können stattdessen versuchen, eine Analyse für einen selbst gehosteten Agent auszuführen.

Codescanaufgabenberechtigungen

Die Codeüberprüfungs-Buildaufgabe verwendet die Pipelineidentität, um die Advanced Security REST-APIs aufzurufen. Standardmäßig haben Pipelines im selben Projekt Zugriff auf das Hochladen der SARIF-Datei, die durch ausführen der CodeQL-Analyse generiert wird. Wenn diese Berechtigungen aus dem Build-Dienstkonto entfernt sind oder über ein benutzerdefiniertes Setup verfügen (z. B. eine Pipeline, die in einem anderen Projekt als das Repository gehostet wird), müssen Sie diese Berechtigungen manuell erteilen.

Schritte zur Problembehandlung:

  • Erteilen Sie die Advanced Security: View alerts- und Advanced Security: Manage and dismiss alerts-Berechtigung für das in Ihrer Pipeline verwendete Builddienstkonto, für projektbezogene Pipelines [Project Name] Build Service ([Organization Name]) und für Sammlungs-bezogene Pipelines Project Collection Build Service ([Organization Name]).

Manuelle Installation des CodeQL-Bundles auf selbst gehosteten Agent

Installieren Sie das CodeQL-Paket im Cache des Agent-Tools mithilfe des auf GitHub verfügbaren Setupskripts für Ihre Architektur. Für diese Skripts muss die $AGENT_TOOLSDIRECTORY-Umgebungsvariable auf den Speicherort des Agent-Tool-Verzeichnisses im Agent festgelegt werden, wie z. B. C:/agent/_work/_tool. Alternativ können Sie die folgenden Schritte manuell implementieren:

  1. Wählen Sie das neueste CodeQL-Releasepaket auf GitHub aus.
  2. Laden Sie das Paket herunter, und entpacken Sie es in das folgende Verzeichnis im Verzeichnis des Agent-Tools, das sich in der Regel unter _work/_tool befindet: ./CodeQL/0.0.0-[codeql-release-bundle-tag]/x64/. Wenn Sie den aktuellen Release von v2.16.0verwenden, wird der Dateiname ./CodeQL/0.0.0-codeql-bundle-v2.16.0/x64/ lauten. Erfahren Sie mehr über das Verzeichnis des Agent-Tools.
  3. Erstellen Sie im Ordner ./CodeQL/0.0.0-[codeql-release-bundle-tag] eine leere Datei mit dem Namen x64.complete. Wenn Sie das vorherige Beispiel verwenden, sollte der Pfad der Enddatei zu Ihrer x64.complete Datei ./CodeQL/0.0.0-codeql-bundle-v2.16.0/x64.complete lauten.