{"meta":{"title":"query compile","intro":"Kompiliert oder überprüft QL-Code.","product":"Sicherheit und Codequalität","breadcrumbs":[{"href":"/de/code-security","title":"Sicherheit und Codequalität"},{"href":"/de/code-security/reference","title":"Reference"},{"href":"/de/code-security/reference/code-scanning","title":"Codeüberprüfung"},{"href":"/de/code-security/reference/code-scanning/codeql","title":"CodeQL"},{"href":"/de/code-security/reference/code-scanning/codeql/codeql-cli-manual","title":"CodeQL CLI-Leitfaden"},{"href":"/de/code-security/reference/code-scanning/codeql/codeql-cli-manual/query-compile","title":"query compile"}],"documentType":"article"},"body":"# query compile\n\nKompiliert oder überprüft QL-Code.\n\n> \\[!NOTE]\n> 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>.\n>\n> 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 <span style=\"white-space: nowrap;\">`--help`</span> im Terminal aus.\n\n## Zusammenfassung\n\n```shell copy\ncodeql query compile [--check-only] [--keep-going] [--threads=<num>] [--ram=<MB>] <options>... -- <file>...\n```\n\n## Description\n\nKompiliert oder überprüft QL-Code.\n\nKompiliert mindestens eine Abfrage. In der Regel ist das Ergebnis dieses Befehls, dass die kompilierte Version der Abfrage in einen *Kompilierungscache* geschrieben wird, wo sie bei einer späteren Ausführung der Abfrage gefunden werden kann. Andere Ausgabeoptionen dienen hauptsächlich zum Debuggen.\n\n## Options\n\n### Primäre Optionen\n\n#### `<file>...`\n\n```\n          \\[Obligatorisch] Zu kompilierende Abfragen. Jedes Argument ist entweder:\n```\n\n* Eine zu kompilierende QL-Datei\n* Ein Verzeichnis, das rekursiv nach QL-Dateien durchsucht wird\n* Eine QLS-Datei, die bestimmte Abfragen definiert.\n* Der Basisname einer bekannten QLS-Datei, die von einem der installierten QL-Pakete exportiert wurde.\n\n#### `-n, --check-only`\n\nÜberprüft lediglich, ob die QL gültig ist, und gibt alle Fehler aus. Der Abfrageplan wird weder optimiert noch gespeichert. Die Ausführung kann erheblich schneller sein als bei einer vollständigen Kompilierung.\n\n#### `--[no-]precompile`\n\n```\n          \\[Erweitert] Speichert jede kompilierte Abfrage als Binärdatei (`.qlx`) neben der `.ql`-Quelle.\n```\n\nDie Verwendung sollte nur beim Vorbereiten eines Abfragepakets für die Verteilung erfolgen (in diesem Fall wird sie automatisch von [codeql pack publish](/de/code-security/reference/code-scanning/codeql/codeql-cli-manual/pack-publish) verwendet). Wenn `.qlx`-Dateien vorhanden sind, können spätere Befehle, die Abfragen ausführen, Änderungen an der QL-Quelle zugunsten der vorkompilierten Version ignorieren.\n\nEinige selten verwendete Kompilierungsoptionen sind inkompatibel und führen zu einem Laufzeitfehler.\n\nVerfügbar seit `v2.12.0`.\n\n#### `--[no-]dump-dil`\n\n```\n          \\[Erweitert] Gibt beim Kompilieren die optimierte DIL-Zwischendarstellung an der Standardausgabe aus.\n```\n\nWenn die JSON-Ausgabe ausgewählt wurde, wird die DIL als Array von einzeiligen Zeichenfolgen dargestellt, mit einem Umbruch, um die kompilierte Abfrage zu kennzeichnen.\n\n#### `-k, --[no-]keep-going`\n\nSetzt die Kompilierung fort, auch wenn ein Fehler gefunden wird.\n\n#### `--[no-]dump-ra`\n\n```\n          \\[Erweitert] Gibt den optimierten RA-Abfrageplan während der Kompilierung an der Standardausgabe aus.\n```\n\nWenn die JSON-Ausgabe ausgewählt wurde, wird der RA als Array von einzeiligen Zeichenfolgen dargestellt, mit einem Umbruch, um die kompilierte Abfrage zu kennzeichnen.\n\n#### `--format=<fmt>`\n\nDient zum Auswählen des Ausgabeformats: `text`*(Standardwert)* oder `json`.\n\n#### `-j, --threads=<num>`\n\nDient zum Festlegen der Anzahl von Threads für die Kompilierung von Abfragen.\n\nDer Standardwert lautet 1. Du kannst 0 übergeben, um jeweils einen Thread pro Kern auf dem Computer zu verwenden, oder -*N*, um *N* Kerne ungenutzt zu lassen. (Es wird allerdings immer noch mindestens ein Thread verwendet.)\n\n#### `-M, --ram=<MB>`\n\nLegt die Gesamtmenge des RAM fest, die der Compiler verwenden darf.\n\n### Optionen zum Steuern der QL-Varianten und Compiler\n\n#### `--warnings=<mode>`\n\nBehandeln von Warnungen vom QL-Compiler Einer von:\n\n```\n          `hide`: Unterdrückt Warnungen.\n\n          `show`\n          _(Standard)_ : Gibt Warnungen aus, setzt die Kompilierung aber fort.\n\n          `error`: Behandelt Warnungen als Fehler.\n```\n\n#### `--no-debug-info`\n\nGibt keine Informationen zum Quellspeicherort in RA zum Debuggen aus.\n\n#### `--[no-]fast-compilation`\n\n```\n          \\[Veraltet] \\[Erweitert] Lässt besonders langsame Optimierungsschritte aus.\n```\n\n#### `--no-release-compatibility`\n\n```\n          \\[Erweitert] Verwendet die neuesten Compilerfeatures auf Kosten der Portabilität.\n```\n\nVon Zeit zu Zeit werden neue QL-Sprachfeatures und Evaluatoroptimierungen vom QL-Evaluator für einige Releases unterstützt, bevor sie standardmäßig im QL-Compiler aktiviert werden. Dadurch wird sichergestellt, dass die Leistung beim Entwickeln von Abfragen mit dem neuesten CodeQL-Release auch von etwas älteren Releases erreicht werden kann, die möglicherweise noch für die Codeüberprüfung oder CI-Integrationen verwendet werden.\n\nWenn es für dich nicht wichtig ist, ob deine Abfragen mit anderen (früheren oder späteren) CodeQL-Releases kompatibel sind, kannst du manchmal eine etwas höhere Leistung erzielen, indem du dieses Flag verwendest, um die neuesten Verbesserungen im Compiler frühzeitig zu aktivieren.\n\nWenn Releases keine neuen Verbesserungen aufweisen, führt diese Option im Hintergrund keine Aktionen aus. Daher kannst du sie bedenkenlos dauerhaft in deiner globalen CodeQL-Konfigurationsdatei festlegen.\n\nVerfügbar seit `v2.11.1`.\n\n#### `--[no-]local-checking`\n\nFührt die anfänglichen Überprüfungen nur für den verwendeten Teil der QL-Quelle durch.\n\n#### `--no-metadata-verification`\n\nÜberprüft eingebettete Abfragemetadaten in QLDoc-Kommentaren nicht auf Gültigkeit.\n\n#### `--compilation-cache-size=<MB>`\n\n```\n          \\[Erweitert] Setzt den Standardwert für die maximale Größe des Verzeichnisses für den Kompilierungscache außer Kraft.\n```\n\n#### `--fail-on-ambiguous-relation-name`\n\n```\n          \\[Erweitert] Die Kompilierung schlägt fehl, wenn während der Kompilierung ein mehrdeutiger Beziehungsname generiert wird.\n```\n\n### Optionen zum Einrichten der Kompilierungsumgebung\n\n#### `--search-path=<dir>[:<dir>...]`\n\nEine 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.\n\nWenn 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.\n\nEin entsprechender Verweis beim Auschecken des Open-Source-CodeQL-Repositorys sollte funktionieren, wenn eine der darin enthaltenen Sprachen abgefragt wird.\n\nWenn 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.)\n\n(Hinweis: Unter Windows wird `;` als Pfadtrennzeichen verwendet.)\n\n#### `--additional-packs=<dir>[:<dir>...]`\n\nBei 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.\n\nDies 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.\n\n(Hinweis: Unter Windows wird `;` als Pfadtrennzeichen verwendet.)\n\n#### `--library-path=<dir>[:<dir>...]`\n\n```\n          \\[Erweitert] Eine optionale Liste von Verzeichnissen, die dem unformatierten Suchpfad für den Import von QL-Bibliotheken hinzugefügt werden. Sollte nur verwendet werden, wenn du QL-Bibliotheken verwendest, die nicht als QL-Pakete gepackt wurden.\n```\n\n(Hinweis: Unter Windows wird `;` als Pfadtrennzeichen verwendet.)\n\n#### `--dbscheme=<file>`\n\n```\n          \\[Erweitert] Definiert explizit, für welches Datenbankschema Abfragen kompiliert werden sollen. Sollte nur von Aufrufer*innen angegeben werden, die sehr genau wissen, was sie tun.\n```\n\n#### `--compilation-cache=<dir>`\n\n```\n          \\[Erweitert] Gibt ein zusätzliches Verzeichnis an, das als Kompilierungscache verwendet werden soll.\n```\n\n#### `--no-default-compilation-cache`\n\n```\n          \\[Erweitert] Verwendet keine Kompilierungscaches an Standardspeicherorten, z. B. im QL-Paket mit der Abfrage oder im Verzeichnis der CodeQL-Toolkette.\n```\n\n### Optionen zum Konfigurieren des CodeQL-Paket-Managers\n\n#### `--registries-auth-stdin`\n\nFührt eine Authentifizierung bei GitHub Enterprise Server-Containerregistrierungen durch, indem eine durch Trennzeichen getrennte Liste von \\<registry\\_url>=\\<token>-Paaren übergeben wird.\n\nDu kannst `https://containers.GHEHOSTNAME1/v2/=TOKEN1,https://containers.GHEHOSTNAME2/v2/=TOKEN2` übergeben,\num dich bei zwei GitHub Enterprise Server-Instanzen zu authentifizieren.\n\nDadurch 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.\n\n#### `--github-auth-stdin`\n\nAuthentifiziere 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.\n\nFür die Authentifizierung bei Containerregistrierungen in GitHub Enterprise Server übergibst du `--registries-auth-stdin` oder verwendest die Umgebungsvariable „CODEQL\\_REGISTRIES\\_AUTH“.\n\nDadurch wird die GITHUB\\_TOKEN-Umgebungsvariable überschrieben.\n\n### Allgemeine Optionen\n\n#### `-h, --help`\n\nZeigt diesen Hilfetext an.\n\n#### `-J=<opt>`\n\n```\n          \\[Erweitert] Dient zum Angeben einer Option für die JVM-Instanz, die den Befehl ausführt.\n```\n\n(Beachte, dass Optionen, die Leerzeichen enthalten, nicht ordnungsgemäß verarbeitet werden.)\n\n#### `-v, --verbose`\n\nErmöglicht die inkrementelle Erhöhung der Anzahl ausgegebener Statusmeldungen.\n\n#### `-q, --quiet`\n\nErmöglicht die inkrementelle Verringerung der Anzahl ausgegebener Statusmeldungen.\n\n#### `--verbosity=<level>`\n\n```\n          \\[Erweitert] Dient zum expliziten Festlegen des Ausführlichkeitsgrads auf „errors“, „warnings“, „progress“, „progress+“, „progress++“ oder „progress+++“. Überschreibt `-v` und `-q`:\n```\n\n#### `--logdir=<dir>`\n\n```\n          \\[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.\n```\n\n(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.)\n\n#### `--common-caches=<dir>`\n\n```\n          \\[Erweitert] Steuert den Speicherort zwischengespeicherter Daten auf dem Datenträger, die zwischen mehreren Ausführungsvorgängen der CLI erhalten bleiben, 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.\n```\n\nVerfügbar seit `v2.15.2`."}