Skip to main content

resolve extensions

[Experimentell] [Deep Plumbing] Ermittelt Erweiterungen, auf die ein Zugriff möglich ist. Dies umfasst Machine Learning-Modelle und Datenerweiterungen.

Wer kann dieses Feature verwenden?

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

Note

In diesem Inhalt wird die neueste Version von CodeQL CLI beschrieben. Weitere Informationen zu diesem Thema findest du unter https://github.com/github/codeql-cli-binaries/releases.

Um Details zu den Optionen anzuzeigen, die für diesen Befehl in früheren Releases verfügbar sind, führe den Befehl mit der Option --help im Terminal aus.

Übersicht

Shell
codeql resolve extensions <options>... -- <query|dir|suite|pack>...

Beschreibung

[Deep Plumbing] Ermittelt Erweiterungen, auf die ein Zugriff möglich ist. Dies umfasst Machine Learning-Modelle und Datenerweiterungen.

Dieser Plumbing-Befehl löst die von GitHub erstellten Machine Learning-Modelle und Datenerweiterungen auf, die für die als Befehlszeilenargumente übergebenen Abfragespezifizierer verfügbar sind.

Optionen

Primäre Optionen

<querysuite|pack>...

[Obligatorisch] Auszuführende Abfragen. Jedes Argument hat die Form scope/name@range:path. Dabei gilt Folgendes:

  • scope/name ist der qualifizierte Name eines CodeQL-Pakets.
  • range ist ein SemVer-Bereich.
  • path ist ein Dateisystempfad.

Wenn ein scope/name angegeben ist, sind range und path optional. Ein fehlender range impliziert die neueste Version des angegebenen Pakets. Ein fehlender path impliziert die Standardabfragesammlung des angegebenen Pakets.

Der path kann Folgendes sein: eine *.ql-Abfragedatei, ein Verzeichnis mit einer oder mehreren Abfragen oder eine .qls-Abfragesammlungsdatei. Wenn kein Packname angegeben ist, muss ein path angegeben werden, der relativ zum Arbeitsverzeichnis des aktuellen Prozesses interpretiert wird.

Um einen path anzugeben, der die Literale @ oder : enthält, verwendest du path: als Präfix für das Argument: path:directory/with:and@/chars.

Wenn du einen scope/name und einen path angibst, kann der path nicht absolut sein. Er wird als relativ zum Stamm des CodeQL-Pakets ausgewertet.

--search-path=<dir>[:<dir>...]

Eine Liste der Verzeichnisse, in denen QL-Pakete gefunden werden können. Jedes Verzeichnis kann entweder ein QL-Paket (oder ein Bündel von Paketen mit einer Datei vom Typ .codeqlmanifest.json am Stamm) oder das unmittelbar übergeordnete Element eines oder mehrerer solcher Verzeichnisse sein.

Wenn der Pfad mehrere Verzeichnisse enthält, definiert deren Reihenfolge ihre Rangfolge: Ist ein Paketname, der aufgelöst werden muss, in mehreren der Verzeichnisstrukturen enthalten, wird die erste Angabe verwendet.

Ein entsprechender Verweis beim Auschecken des Open-Source-CodeQL-Repositorys sollte funktionieren, wenn eine der darin enthaltenen Sprachen abgefragt wird.

Wenn du das CodeQL-Repository als gleichgeordnetes Element der entpackten CodeQL-Toolkette ausgecheckt hast, musst du diese Option nicht verwenden. Solche gleichgeordneten Verzeichnisse werden immer nach QL-Paketen durchsucht, die andernfalls nicht gefunden werden können. (Wenn diese Standardeinstellung nicht funktioniert, solltest du unbedingt --search-path in einer Benutzerkonfigurationsdatei festlegen.)

(Hinweis: Unter Windows wird ; als Pfadtrennzeichen verwendet.)

--additional-packs=<dir>[:<dir>...]

Bei Angabe dieser Verzeichnisliste werden die Verzeichnisse vor den Verzeichnissen in --search-path nach Paketen durchsucht. Die Reihenfolge zwischen diesen Elementen spielt keine Rolle. Wenn ein Paketname über diese Liste an zwei verschiedenen Stellen gefunden wird, handelt es sich um einen Fehler.

Dies ist hilfreich, wenn du vorübergehend eine neue Version eines Pakets entwickelst, die auch am Standardpfad vorhanden ist. Andererseits wird davon abgeraten, diese Option in einer Konfigurationsdatei außer Kraft zu setzen. Einige interne Aktionen fügen diese Option direkt hinzu, wodurch alle konfigurierten Werte überschrieben werden.

(Hinweis: Unter Windows wird ; als Pfadtrennzeichen verwendet.)

--model-packs=<name@range>...

Eine Liste von CodeQL-Paketnamen, jeweils mit einem optionalen Versionsbereich, die als Modellpakete verwendet werden, um die Abfragen, die ausgewertet werden sollen, anzupassen.

--threat-model=<name>...

Eine Liste der Bedrohungsmodelle, die aktiviert oder deaktiviert werden sollen.

Das Argument ist der Name eines Bedrohungsmodells, dem optional ein „!“ vorangestellt ist. Wenn kein ‚!’ vorhanden ist, werden das benannte Bedrohungsmodell und alle untergeordneten Elemente aktiviert. Wenn ein ‚!’ vorhanden ist, werden das benannte Bedrohungsmodell und alle untergeordneten Elemente deaktiviert.

Das Bedrohungsmodell ‚Standard’ ist standardmäßig aktiviert, kann jedoch durch Angabe von ‚---threat-model !default’ deaktiviert werden.

Das Bedrohungsmodell ‚alle’ kann verwendet werden, um alle Bedrohungsmodelle zu aktivieren oder zu deaktivieren.

Die Optionen für das --Bedrohungsmodell werden in der entsprechenden Reihenfolge verarbeitet. Beispielsweise ermöglicht ‚---threat-model local --threat-model !environment’ alle Bedrohungsmodelle in der Gruppe ‚lokal’, mit Ausnahme des Bedrohungsmodells ‚Umgebung’.

Diese Option hat nur Auswirkungen auf Sprachen, die Bedrohungsmodelle unterstützen.

Verfügbar seit v2.15.3.

Optionen zum Konfigurieren des CodeQL-Paket-Managers

--registries-auth-stdin

Führt eine Authentifizierung bei GitHub Enterprise Server-Containerregistrierungen durch, indem eine durch Trennzeichen getrennte Liste von <registry_url>=<token>-Paaren übergeben wird.

Du kannst https://containers.GHEHOSTNAME1/v2/=TOKEN1,https://containers.GHEHOSTNAME2/v2/=TOKEN2 übergeben, um dich bei zwei GitHub Enterprise Server-Instanzen zu authentifizieren.

Dadurch werden die Umgebungsvariablen CODEQL_REGISTRIES_AUTH und GITHUB_TOKEN überschrieben. Wenn du dich nur bei der Containerregistrierung von github.com authentifizieren musst, kannst du dich stattdessen mit der einfacheren Option --github-auth-stdin authentifizieren.

--github-auth-stdin

Authentifiziere dich bei der Containerregistrierung auf github.com, indem du auf github.com ein GitHub Apps-Token oder ein persönliches Zugriffstoken über die Standardeingabe übergibst.

Für die Authentifizierung bei Containerregistrierungen in GitHub Enterprise Server übergibst du --registries-auth-stdin oder verwendest die Umgebungsvariable „CODEQL_REGISTRIES_AUTH“.

Dadurch wird die GITHUB_TOKEN-Umgebungsvariable überschrieben.

Allgemeine Optionen

-h, --help

Zeigt diesen Hilfetext an.

-J=<opt>

[Erweitert] Dient zum Angeben einer Option für die JVM-Instanz, die den Befehl ausführt.

(Beachte, dass Optionen, die Leerzeichen enthalten, nicht ordnungsgemäß verarbeitet werden.)

-v, --verbose

Ermöglicht die inkrementelle Erhöhung der Anzahl ausgegebener Statusmeldungen.

-q, --quiet

Ermöglicht die inkrementelle Verringerung der Anzahl ausgegebener Statusmeldungen.

--verbosity=<level>

[Erweitert] Dient zum expliziten Festlegen des Ausführlichkeitsgrads auf „errors“, „warnings“, „progress“, „progress+“, „progress++“ oder „progress+++“. Überschreibt -v und -q:

--logdir=<dir>

[Erweitert] Ermöglicht das Schreiben detaillierter Protokolle in eine oder mehrere Dateien im angegebenen Verzeichnis mit generierten Namen, die Zeitstempel und den Namen des ausgeführten Unterbefehls enthalten.

(Um eine Protokolldatei mit einem Namen zu schreiben, über den du die volle Kontrolle hast, gib stattdessen --log-to-stderr an, und leite stderr wie gewünscht um.)

--common-caches=<dir>

[Erweitert] Steuert den Speicherort zwischengespeicherter Daten auf dem Datenträger, der zwischen mehreren Ausführungsvorgängen der CLI beibehalten wird, z. B. heruntergeladene QL-Pakete und kompilierte Abfragepläne. Wenn dies nicht explizit festgelegt ist, wird dieses Verzeichnis standardmäßig auf ein Verzeichnis mit dem Namen .codeql festgelegt, das sich im Startverzeichnis des Benutzer. Es wird erstellt, wenn es noch nicht vorhanden ist.

Verfügbar seit v2.15.2.