Skip to main content

Veröffentlichen und Verwenden von CodeQL-Paketen

Teilen oder laden Die ein CodeQL-Paket herunter und analysieren Sie dann Ihre CodeQL-Datenbank.

Wer kann dieses Feature verwenden?

CodeQL ist für die folgenden Repositorytypen verfügbar:

Authentifizierung bei GitHub Container registries

Du kannst Packs veröffentlichen und private Packs herunterladen, indem du dich bei den entsprechenden GitHub authentifizierst. Container registry.

Du kannst dich bei der Container registry auf zwei Arten authentifizieren:

  1. Übergeben Sie die Option --github-auth-stdin an die CodeQL CLI, und übermitteln Sie dann ein GitHub Apps-Token oder personal access token über die Standardeingabe.
  2. Legen Sie die Umgebungsvariable GITHUB_TOKEN auf ein GitHub Apps-Token oder personal access token fest.

Veröffentlichung Ihres CodeQL Pakets

Um Ihr CodeQL-Paket mit anderen zu teilen, können Sie es in der Container registry veröffentlichen.

Konfigurieren der qlpack.yml-Datei vor der Veröffentlichung

Sie können die Konfigurationsdetails Ihres CodeQL-Pakets vor der Veröffentlichung überprüfen und ändern. Öffnen Sie die qlpack.yml-Datei in Ihrem bevorzugten Text-Editor.

library: # set to true if the pack is a library. Set to false or omit for a query pack
name: <scope>/<pack>
version: <x.x.x>
description: <Description to publish with the package>
defaultSuite: # optional, one or more queries in the pack to run by default
    - query: <relative-path>/query-file>.ql
defaultSuiteFile: default-queries.qls # optional, a pointer to a query-suite in this pack
license: # optional, the license under which the pack is published
dependencies: # map from CodeQL pack name to version range
  •         `name:` muss dem `<scope>/<pack>` Format folgen, wobei `<scope>` die GitHub Organisation ist, in der du veröffentlichen wirst und `<pack>` der Name für das Pack ist.
    
  • Es ist maximal eine defaultSuite- bzw. defaultSuiteFile-Komponente zulässig. Dies sind zwei verschiedene Möglichkeiten, eine auszuführende Standardabfragesammlung zu definieren: die erste durch direktes Angeben von Abfragen in der Datei „qlpack.yml“ und die zweite durch Angeben einer Abfragesammlung im Paket.

Wird ausgeführt codeql pack publish

Wenn Sie bereit sind, ein Paket in der GitHub-Container registry zu veröffentlichen, können Sie den folgenden Befehl im Stammverzeichnis des Paketverzeichnisses ausführen:

codeql pack publish

Das veröffentlichte Paket wird im Paketabschnitt der GitHub-Organisation angezeigt, die durch den Bereich in der qlpack.yml-Datei angegeben wird.

Hinweis

Wenn du Model Packs an den GitHub veröffentlichst Container registry veröffentlichst, um die Abdeckung als Element einer Standard-Einrichtung auf alle Repositories in einer Organisation auszuweiten, musst du sicherstellen, dass Repositories, die Code-Scans ausführen, auf diese Model Packs zugreifen können. Weitere Informationen findest du unter Bearbeiten der Konfiguration des Standardsetups und Konfigurieren der Zugriffssteuerung und Sichtbarkeit von Paketen.

Herunterladen eines vorhandenen CodeQL Pakets

Um ein Paket auszuführen, das eine andere Person erstellt hat, müssen Sie es zuerst herunterladen, indem Sie den folgenden Befehl ausführen:

codeql pack download <scope>/<pack>@x.x.x
  •         `<scope>`: der Name der GitHub Organisation, von der du das Paket herunterladen wirst.
    
  •         `<pack>`: der Name des Pakets, das du herunterladen möchtest.
    
  •         `@x.x.x`: eine optionale Versionsnummer. Wenn sie nicht angegeben wird, wird die neueste Version heruntergeladen.
    

Dieser Befehl akzeptiert Argumente für mehrere Pakete.

Wenn du Skripte schreibst, die eine bestimmte Versionsnummer eines herunterzuladenden Abfragepakets angeben, denke daran, dass du, wenn du deine Version von CodeQL auf eine neuere Version aktualisierst, möglicherweise auch auf eine neuere Version des Abfragepakets umsteigen musst. Neuere Versionen von CodeQL bieten möglicherweise eine schlechtere Leistung, wenn sie mit Abfragepaketen verwendet werden, die an eine sehr alte Version angeheftet wurden. Weitere Informationen findest du unter Über die Kompatibilität des CodeQL Packs.

Verwenden eines CodeQL-Pakets zum Analysieren einer CodeQL-Datenbank

Führen Sie den folgenden Befehl aus, um eine CodeQL-Datenbank mit einem CodeQL-Paket auszuführen:

codeql database analyze <database> <scope>/<pack>@x.x.x:<path>
  •         `<database>`: die CodeQL Datenbank, die analysiert werden soll.
    
  •         `<scope>`: der Name der GitHub Organisation, bei der das Pack veröffentlicht wird.
    
  •         `<pack>`: der Name des Packs, das du verwendest.
    
  •         `@x.x.x`: eine optionale Versionsnummer. Wenn sie nicht angegeben wird, wird die neueste Version verwendet.
    
  •         `:<path>`: ein optionaler Pfad zu einer Abfrage, einem Verzeichnis oder einer Suite von Abfragen. Wenn dieser nicht angegeben wird, wird die Standardabfragesammlung des Pakets verwendet.
    

Der analyze-Befehl führt die Standardsammlung aller angegebenen CodeQL-Pakete aus. Sie können mehrere CodeQL-Pakete angeben, die für die Analyse einer CodeQL-Datenbank verwendet werden sollen. Beispiel:

codeql <database> analyze <scope>/<pack> <scope>/<other-pack>

Hinweis

Der codeql pack download-Befehl speichert das heruntergeladene Paket an einem internen Ort, der nicht für lokale Änderungen vorgesehen ist. Unerwartetes (und schwer zu behebendes) Verhalten kann auftreten, wenn das Paket nach dem Herunterladen geändert wird. Weitere Informationen zum Anpassen von Paketen findest du unter Erstellen und Arbeiten mit CodeQL-Paketen.