{"meta":{"title":"test run","intro":"Führt Komponententests für QL-Abfragen aus.","product":"Sicherheit und Codequalität","breadcrumbs":[{"href":"/de/enterprise-server@3.20/code-security","title":"Sicherheit und Codequalität"},{"href":"/de/enterprise-server@3.20/code-security/reference","title":"Reference"},{"href":"/de/enterprise-server@3.20/code-security/reference/code-scanning","title":"Codeüberprüfung"},{"href":"/de/enterprise-server@3.20/code-security/reference/code-scanning/codeql","title":"CodeQL"},{"href":"/de/enterprise-server@3.20/code-security/reference/code-scanning/codeql/codeql-cli-manual","title":"CodeQL CLI-Leitfaden"},{"href":"/de/enterprise-server@3.20/code-security/reference/code-scanning/codeql/codeql-cli-manual/test-run","title":"test run"}],"documentType":"article"},"body":"# test run\n\nFührt Komponententests für QL-Abfragen aus.\n\n## Zusammenfassung\n\n```shell copy\ncodeql test run [--threads=<num>] [--ram=<MB>] <options>... -- <test|dir>...\n```\n\n## Description\n\nFührt Komponententests für QL-Abfragen aus.\n\n## Options\n\n### Primäre Optionen\n\n#### `<test|dir>...`\n\nJedes Argument ist entweder:\n\n* Eine Datei vom Typ `.ql` oder `.qlref`, die einen auszuführenden Test definiert\n* Ein Verzeichnis, das rekursiv nach auszuführenden Tests durchsucht wird\n\n#### `--failing-exitcode=<code>`\n\n```\n          \\[Erweitert] Legt den Exitcode so fest, dass er erzeugt wird, wenn Fehler jeglicher Art auftreten. Normalerweise ist er auf 1 festgelegt, aber für Tools, die die Ausgabe parsen, ist es empfehlenswert, ihn auf 0 festzulegen.\n```\n\n#### `--format=<fmt>`\n\nLegt ein Ausgabeformat fest. Mögliche Optionen:\n\n```\n          `text`\n          _(Standard)_ : Eine für Menschen lesbare Textdarstellung.\n\n          `json`: Ein gestreamtes JSON-Array von Testergebnisobjekten.\n\n          `betterjson`: Ein gestreamtes JSON-Array von Ereignisobjekten.\n\n          `jsonz`: Ein Stream nullterminierter JSON-Testergebnisobjekte.\n\n          `betterjsonz`: Ein Stream nullterminierter JSON-Ereignisobjekte.\n```\n\nFür die `betterjson` Formate und `betterjsonz` verfügt jedes Ereignis über eine `type`-Eigenschaft, die den Typ des Ereignisses angibt. Neue Ereignistypen können in Zukunft hinzugefügt werden, sodass Consumer jedes Ereignis mit einer nicht erkannten `kind`-Eigenschaft ignorieren sollten.\n\n#### `--[no-]keep-databases`\n\n```\n          \\[Erweitert] Behält die Datenbanken bei, die extrahiert wurden, um die Testabfragen auszuführen, auch wenn alle Tests in einem Verzeichnis erfolgreich sind. (Die Datenbank wird immer beibehalten, wenn Tests _fehlschlagen_.)\n```\n\n#### `--[no-]fast-compilation`\n\n```\n          \\[Veraltet] \\[Erweitert] Lässt besonders langsame Optimierungsschritte beim Kompilieren von Testabfragen aus.\n```\n\n#### `--[no-]learn`\n\n```\n          \\[Erweitert] Wenn ein Test eine unerwartete Ausgabe generiert, wird kein Fehler ausgegeben, sondern die `.expected`-Datei so aktualisiert, dass sie mit der tatsächlichen Ausgabe übereinstimmt und damit der Test bestanden wird. Tests können in diesem Modus weiterhin zu Fehlern führen, z. B. wenn die Erstellung einer Testdatenbank für die Abfrage nicht erfolgreich war.\n```\n\n#### `--consistency-queries=<dir>`\n\n```\n          \\[Erweitert] Ein Verzeichnis mit Konsistenzabfragen, die für jede Testdatenbank ausgeführt werden. Diese Abfragen sollten (außer bei Problemen) keine Ausgabe generieren, es sei denn, das Testverzeichnis enthält ein Unterverzeichnis `CONSISTENCY` mit einer `.expected`-Datei. Dies ist vor allem für das Testen von Extraktoren nützlich.\n```\n\n#### `--[no-]check-databases`\n\n```\n          \\[Erweitert] Führt [codeql dataset check](/code-security/reference/code-scanning/codeql/codeql-cli-manual/dataset-check) für jede erstellte Testdatenbank aus und meldet einen Fehler, wenn Inkonsistenzen gefunden werden. Dies ist für das Testen von Extraktoren nützlich. Wenn bei der Überprüfung (vorübergehend) ein Fehler für eine bestimmte Datenbank erwartet wird, platziere eine `DB-CHECK.expected`-Datei im Testverzeichnis.\n```\n\n#### `--[no-]show-extractor-output`\n\n```\n          \\[Erweitert] Zeigt die Ausgabe von Extraktorskripts an, die Testdatenbanken erstellen. Dies kann beim Entwickeln oder Bearbeiten von Testfällen hilfreich sein.\n```\n\nBeachte jedoch, dass dies bei der Verwendung mit mehreren Threads zu doppelten oder fehlerhaften Ausgaben führen kann!\n\n#### `-M, --ram=<MB>`\n\nDient zum Festlegen der Gesamtmenge des RAM, die vom Testrunner verwendet werden darf.\n\n#### `--slice=<N/M>`\n\n```\n          \\[Erweitert] Ermöglicht es, die Testfälle in _M_ in etwa gleich große Segmente aufzuteilen und nur das _&#x4E;_&#x74;h davon zu verarbeiten. Dieses Verfahren kann zur manuellen Parallelisierung des Testprozesses verwendet werden.\n```\n\n#### `--[no-]strict-test-discovery`\n\n```\n          \\[Erweitert] Legt fest, dass nur Abfragen verwendet werden sollen, die eindeutig als Tests identifiziert werden können.\n```\n\nIn diesem Modus wird versucht, zwischen Dateien vom Typ `.ql`, die Komponententests definieren, und Dateien vom Typ `.ql`, bei denen es sich um hilfreiche Abfragen handelt, zu unterscheiden. Diese Option wird von Tools wie IDEs verwendet, die alle Komponententests in einer Verzeichnisstruktur identifizieren müssen, ohne auf Vorkenntnisse zur Anordnung der enthaltenen Dateien angewiesen zu sein.\n\nInnerhalb eines QL-Pakets, dessen Datei `qlpack.yml` ein Verzeichnis vom Typ `tests` deklariert, werden alle Dateien vom Typ `.ql` in diesem Verzeichnis als Tests betrachtet, und Dateien vom Typ `.ql` außerhalb des Verzeichnisses werden ignoriert. In einem QL-Paket, das kein Verzeichnis vom Typ `tests` deklariert, wird eine Datei vom Typ `.ql` nur dann als Test identifiziert, wenn sie über eine entsprechende Datei vom Typ `.expected` verfügt.\n\nAus Konsistenzgründen gelten für Dateien vom Typ `.qlref` die gleichen einschränkenden Regeln wie für Dateien vom Typ `.ql`, auch wenn eine Datei vom Typ `.qlref` immer ein Test ist.\n\n### Optionen zum Suchen nach Bibliotheken und Extraktoren, die bei den Tests verwendet werden\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### Optionen zum Steuern der Abfragekompilierung\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### Optionen zum Steuern der Auswertung von Testabfragen\n\n#### `--[no-]tuple-counting`\n\n```\n          \\[Erweitert] Zeigt die Tupel-Anzahl für jeden Auswertungsschritt in den Protokollen der Abfrageauswertung an. Bei Angabe der Option `--evaluator-log` wird die Tupelanzahl sowohl in die textbasierten als auch in die strukturierten JSON-Protokolle eingeschlossen, die durch den Befehl erstellt werden. (Dies kann bei der Optimierung der Leistung von komplexem QL-Code hilfreich sein.)\n```\n\n#### `--timeout=<seconds>`\n\n```\n          \\[Erweitert] Dient zum Festlegen der Timeoutlänge für die Abfrageauswertung in Sekunden.\n```\n\nDas Timeoutfeature ist für Fälle vorgesehen, in denen die Auswertung einer komplexen Abfrage zu lange dauern würde. Es ist keine effektive Methode zur Begrenzung der Gesamtdauer der Abfrageauswertung. Die Auswertung kann fortgesetzt werden, solange jeder Teil der Berechnung, für den eine separate Zeiterfassung erfolgt, innerhalb des Timeouts abgeschlossen wird. Derzeit sind diese Teile mit separater Zeiterfassung „RA-Ebenen“ der optimierten Abfrage. Dies kann sich aber noch ändern.\n\nOhne Timeoutangabe oder bei Angabe eines Nullwerts wird kein Timeout festgelegt. (Einzige Ausnahme ist codeql test run: Hier gilt ein Standardtimeout von fünf Minuten.)\n\n#### `-j, --threads=<num>`\n\nDient zum Festlegen, wie viele Threads für die Abfrageauswertung verwendet werden sollen.\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### Optionen zum Steuern der Ausgabe strukturierter Auswertungsprotokolle\n\n#### `--evaluator-log=<file>`\n\n```\n          \\[Erweitert] Dient zum Ausgeben strukturierter Protokolle zur Leistung des Auswerters für die angegebene Datei. Das Format dieser Protokolldatei kann ohne vorherige Ankündigung geändert werden. Es handelt sich jedoch um einen Datenstrom von JSON-Objekten, die entweder durch zwei Neue-Zeile-Zeichen (standardmäßig) getrennt werden – oder durch ein einzelnes, wenn die Option `--evaluator-log-minify` übergeben wird. Verwende `codeql generate log-summary <file>`, um eine stabilere Zusammenfassung dieser Datei zu erstellen, und vermeide eine direkte Analyse der Datei. Die Datei wird überschrieben, wenn sie bereits vorhanden ist.\n```\n\n#### `--evaluator-log-minify`\n\n```\n          \\[Erweitert] Wenn die Option `--evaluator-log` zusammen mit dieser Option übergeben wird, wird die Größe des generierten JSON-Protokolls minimiert. Dies beeinträchtigt allerdings die Lesbarkeit.\n```\n\n### Optionen zum Überprüfen importierter TRAP-Dateien\n\n#### `--[no-]check-undefined-labels`\n\n```\n          \\[Erweitert] Meldet Fehler für nicht definierte Bezeichnungen.\n```\n\n#### `--[no-]check-unused-labels`\n\n```\n          \\[Erweitert] Meldet Fehler für nicht genutzte Bezeichnungen.\n```\n\n#### `--[no-]check-repeated-labels`\n\n```\n          \\[Erweitert] Meldet Fehler für wiederholte Bezeichnungen.\n```\n\n#### `--[no-]check-redefined-labels`\n\n```\n          \\[Erweitert] Meldet Fehler für neu definierte Bezeichnungen.\n```\n\n#### `--[no-]check-use-before-definition`\n\n```\n          \\[Erweitert] Meldet Fehler für Bezeichnungen, die verwendet werden, bevor sie definiert wurden.\n```\n\n#### `--[no-]fail-on-trap-errors`\n\n```\n          \\[Erweitert] Führt zu einer Beendigung ungleich null, wenn beim TRAP-Import ein Fehler auftritt.\n```\n\n#### `--[no-]include-location-in-star`\n\n```\n          \\[Erweitert] Erstellt Entitäts-IDs, die den Speicherort in der TRAP-Datei codieren, aus der sie stammen. Kann für das Debuggen von TRAP-Generatoren nützlich sein, nimmt aber viel Platz im Dataset ein.\n```\n\n#### `--[no-]linkage-aware-import`\n\n```\n          \\[Erweitert] Legt fest, ob der [Import von Codeql-Datasets](/code-security/reference/code-scanning/codeql/codeql-cli-manual/dataset-import) verknüpfungsfähig _(Standard)_ ist oder nicht. Bei Projekten, bei denen dieser Teil der Datenbankerstellung zu viel Arbeitsspeicher verbraucht, kann die Deaktivierung dieser Option den Fortschritt auf Kosten der Vollständigkeit der Datenbank fördern.\n```\n\nVerfügbar seit `v2.15.3`.\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, 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.\n```\n\nVerfügbar seit `v2.15.2`."}