{"meta":{"title":"Anpassen der Analyse mit CodeQL-Paketen","intro":"Du kannst CodeQL-Pakete verwenden, um von anderen Personen verwaltete CodeQL-Abfragen auszuführen oder von dir entwickelte CodeQL-Abfragen freizugeben.","product":"Sicherheit und Codequalität","breadcrumbs":[{"href":"/de/code-security","title":"Sicherheit und Codequalität"},{"href":"/de/code-security/tutorials","title":"Anleitungen"},{"href":"/de/code-security/tutorials/customize-code-scanning","title":"Anpassung des Codescannings"},{"href":"/de/code-security/tutorials/customize-code-scanning/customizing-analysis-with-codeql-packs","title":"Anpassen der Analyse"}],"documentType":"article"},"body":"# Anpassen der Analyse mit CodeQL-Paketen\n\nDu kannst CodeQL-Pakete verwenden, um von anderen Personen verwaltete CodeQL-Abfragen auszuführen oder von dir entwickelte CodeQL-Abfragen freizugeben.\n\nDu kannst deine CodeQL-Analyse anpassen, indem du Pakete herunterlädst, die von anderen Personen erstellt wurden, und sie auf deiner Codebasis ausführst. Weitere Informationen finden Sie unter [CodeQL-Abfragepakete](/de/code-security/concepts/code-scanning/codeql/codeql-query-packs).\n\n## Herunterladen und Verwenden von CodeQL-Abfragepaketen\n\nBevor Sie ein CodeQL-Abfragepaket verwenden können, um eine Datenbank zu analysieren, müssen alle Pakete heruntergeladen werden, die Sie aus der GitHub Container registry benötigen. Dies kann durch Verwendung des Flags `--download` als Teil des Befehls `codeql database analyze` erfolgen, oder durch Ausführen von `codeql pack download`. Wenn ein Paket nicht öffentlich verfügbar ist, musst du eine GitHub App oder ein personal access token zum Authentifizieren verwenden. Weitere Informationen und ein Beispiel findest du unter [Hochladen von CodeQL-Analyseergebnissen in GitHub](/de/code-security/codeql-cli/getting-started-with-the-codeql-cli/uploading-codeql-analysis-results-to-github#uploading-results-to-github).\n\n| Option                                                                             |                                                                                                                                                                                                          Erforderlich                                                                                                                                                                                                          | Usage                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |\n| ---------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| <code><span style=\"white-space: nowrap;\">\\<scope/name\\@version:path></span></code> |                                                   <svg version=\"1.1\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" class=\"octicon octicon-check\" aria-label=\"Erforderlich\" role=\"img\"><path d=\"M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z\"></path></svg>                                                  | Gib unter Verwendung einer durch Trennzeichen getrennten Liste den Bereich und den Namen von mindestens einem CodeQL-Abfragepaket an, das heruntergeladen werden soll. Schließe optional die Version ein, die heruntergeladen und entpackt werden soll. Standardmäßig wird die neueste Version des Pakets heruntergeladen. Optional kannst du einen Pfad zu einer Abfrage, einem Verzeichnis oder einer Abfragesammlung angeben, die ausgeführt werden soll. Wenn kein Pfad angegeben ist, führe die Standardabfragen dieses Pakets aus. |\n| <code><span style=\"white-space: nowrap;\">--github-auth-stdin</span></code>         | <svg version=\"1.1\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" class=\"octicon octicon-x\" aria-label=\"Optional\" role=\"img\"><path d=\"M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z\"></path></svg> | Übergebe die CLI an die GitHub App oder das personal access token, das zur Authentifizierung mit der REST-API von GitHub aus deinem Geheimnisspeicher über die Standardeingabe erstellt wurde. Dies ist nicht erforderlich, wenn der Befehl über Zugriff auf `GITHUB_TOKEN`-Umgebungsvariablen verfügt, die mit diesem Token festgelegt wurden.                                                                                                                                                                                          |\n\n> \\[!NOTE]\n> Wenn du eine bestimmte Version eines Abfrage-Packs angibst, beachte, dass die von dir angegebene Version irgendwann zu alt sein kann, um von der neuesten Version von CodeQL effizient genutzt zu werden. Um eine optimale Leistung zu gewährleisten, solltest du bei jedem Upgrade der verwendeten CodeQL CLI neu abwägen, welche Versionen du anpinnst, wenn du genaue Abfragepaketversionen angeben musst.\n>\n> Weitere Informationen zur Kompatibilität von Paketen findest du unter [Referenz zu CodeQL-Abfragepaketen](/de/code-security/reference/code-scanning/codeql/codeql-cli/codeql-query-packs#codeql-pack-compatibility).\n\n### Einfaches Beispiel für das Herunterladen und Verwenden von Abfragepaketen\n\nIn diesem Beispiel wird der Befehl `codeql database analyze` mit der Option `--download` für folgende Zwecke ausgeführt:\n\n1. Herunterladen der neuesten Version des Pakets `octo-org/security-queries`\n2. Herunterladen einer Version des Pakets `octo-org/optional-security-queries`, die mit Version 1.0.1 *kompatibel* ist (in diesem Fall Version 1.0.2) Weitere Informationen zur SemVer-Kompatibilität findest du in der [npm-Dokumentation zur semantischen Versionierung unter „Ranges“](https://github.com/npm/node-semver#ranges).\n3. Ausführen aller Standardabfragen in `octo-org/security-queries`\n4. Ausschließliches Ausführen der Abfrage `queries/csrf.ql` in `octo-org/optional-security-queries`\n\n```shell\n$ echo $OCTO-ORG_ACCESS_TOKEN | codeql database analyze --download /codeql-dbs/example-repo \\\n    octo-org/security-queries \\\n    octo-org/optional-security-queries@~1.0.1:queries/csrf.ql \\\n    --format=sarif-latest --output=/temp/example-repo-js.sarif\n\n> Download location: /Users/mona/.codeql/packages\n> Installed fresh octo-org/security-queries@1.0.0\n> Installed fresh octo-org/optional-security-queries@1.0.2\n> Running queries.\n> Compiling query plan for /Users/mona/.codeql/packages/octo-org/security-queries/1.0.0/potential-sql-injection.ql.\n> [1/2] Found in cache: /Users/mona/.codeql/packages/octo-org/security-queries/1.0.0/potential-sql-injection.ql.\n> Starting evaluation of octo-org/security-queries/query1.ql.\n> Compiling query plan for /Users/mona/.codeql/packages/octo-org/optional-security-queries/1.0.2/queries/csrf.ql.\n> [2/2] Found in cache: /Users/mona/.codeql/packages/octo-org/optional-security-queries/1.0.2/queries/csrf.ql.\n> Starting evaluation of octo-org/optional-security-queries/queries/csrf.ql.\n> [2/2 eval 694ms] Evaluation done; writing results to octo-org/security-queries/query1.bqrs.\n> Shutting down query evaluator.\n> Interpreting results.\n```\n\n### Direktes Herunterladen von CodeQL-Paketen\n\nWenn du ein CodeQL-Paket herunterladen möchtest, ohne es sofort auszuführen, kannst du den Befehl `codeql pack download` verwenden. Dies ist nützlich, wenn du bei der Ausführung von CodeQL-Abfragen den Zugriff auf das Internet vermeiden möchtest. Wenn du die CodeQL-Analyse ausführst, kannst du Pakete, Versionen und Pfade auf die gleiche Weise wie im vorherigen Beispiel angeben:\n\n```shell\necho $OCTO-ORG_ACCESS_TOKEN | codeql pack download <scope/name@version:path> <scope/name@version:path> ...\n```\n\n### Herunterladen von CodeQL-Paketen aus mehreren GitHub-Containerregistrierungen\n\nWenn sich deine CodeQL-Pakete in mehreren Containerregistrierungen befinden, musst du der CodeQL CLI mitteilen, wo jedes Paket zu finden ist. Weitere Informationen finden Sie unter [Workflowkonfigurationsoptionen für die Codeüberprüfung](/de/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning#downloading-codeql-packs-from-github-enterprise-server).\n\n## Angeben, welche Abfragen in einem CodeQL-Paket ausgeführt werden sollen\n\nAbfragespezifizierer werden von `codeql database analyze` und anderen Befehlen verwendet, die für mehrere Abfragen ausgeführt werden.\nDie vollständige Form eines Abfragespezifizierers lautet `scope/name@range:path`, wobei Folgendes gilt:\n\n* ```\n          `scope/name` ist der qualifizierte Name eines CodeQL-Packs.\n  ```\n* ```\n          `range` ist ein [Semver-Bereich](https://docs.npmjs.com/cli/v6/using-npm/semver#ranges).\n  ```\n* ```\n          `path` ist ein Dateisystempfad zu einer einzelnen Abfrage, einem Verzeichnis, das Abfragen enthält, oder einer Abfrage-Suite-Datei.\n  ```\n\nWenn du einen `scope/name` angibst, sind `range` und `path` optional. Wenn du `range` nicht angibst, wird die neueste Version des angegebenen Pakets verwendet. Wenn du `path` nicht angibst, wird die Standardabfragesammlung des angegebenen Pakets verwendet.\n\nDer `path` kann Folgendes sein: eine `.ql`-Abfragedatei, ein Verzeichnis mit einer oder mehreren Abfragen oder eine `.qls`-Abfragesammlungsdatei. Wenn du den Namen eines Pakets nicht angibst, musst du einen `path`angeben, der relativ zum Arbeitsverzeichnis des aktuellen Prozesses interpretiert wird. Globmuster werden nicht unterstützt.\n\nWenn du sowohl einen `scope/name` als auch einen `path` angibst, kann der `path` nicht absolut sein. Er wird als relativ zum Stamm des CodeQL-Pakets betrachtet.\n\n### Beispielabfragespezifizierer\n\n* ```\n          `codeql/python-queries` - Alle Abfragen in der standardmäßigen Suite der neuesten Version des `codeql/python-queries` Packs.\n  ```\n\n* ```\n          `codeql/python-queries@1.2.3` - Alle Abfragen in der Standard-Abfrage-Suite der Version `1.2.3` des `codeql/python-queries` Packs.\n  ```\n\n* ```\n          `codeql/python-queries@~1.2.3` - Alle Abfragen in der Standard-Abfrage-Suite der neuesten Version des `codeql/python-queries` Packs, die >= `1.2.3` und < `1.3.0` ist.\n  ```\n\n* ```\n          `codeql/python-queries:Functions` - Alle Abfragen im Verzeichnis `Functions` in der letzten Version des `codeql/python-queries` Packs.\n  ```\n\n* ```\n          `codeql/python-queries@1.2.3:Functions` - Alle Abfragen im Verzeichnis `Functions` in der Version 1.2.3 des `codeql/python-queries` Packs.\n  ```\n\n* ```\n          `codeql/python-queries@1.2.3:codeql-suites/python-code-scanning.qls` - Alle Abfragen im Verzeichnis `codeql-suites/python-code-scanning.qls` in der Version 1.2.3 des `codeql/python-queries` Packs.\n  ```\n\n* ```\n          `suites/my-suite.qls` - Alle Abfragen in der Datei `suites/my-suite.qls` relativ zum aktuellen Arbeitsverzeichnis.\n  ```\n\n> \\[!TIP]\n> Die Standardabfragesammlung der CodeQL-Standardabfragepakete ist `codeql-suites/<lang>-code-scanning.qls`. Weitere nützliche Abfragesammlungen findest du auch im `codeql-suites`-Verzeichnis jedes Pakets. Das `codeql/cpp-queries`-Paket enthält beispielsweise die folgenden Abfragesammlungen:\n>\n> *\n\n```\n          `cpp-code-scanning.qls` - Standard Code Scanning Abfragen für C++. Dies ist die Standardabfragesammlung für dieses Paket.\n```\n\n> *\n\n```\n          `cpp-security-extended.qls` - Abfragen aus der Standard `cpp-code-scanning.qls` Suite für C++, plus Abfragen mit geringerem Schweregrad und geringerer Genauigkeit.\n```\n\n> *\n\n```\n          `cpp-security-and-quality.qls` - Abfragen aus `cpp-security-extended.qls`, plus Wartbarkeits- und Zuverlässigkeitsabfragen.\n```\n\n> Die Quellen für diese Abfragesammlungen sind im [Repository CodeQL](https://github.com/github/codeql/tree/main/cpp/ql/src/codeql-suites) zu finden. Abfragesammlungen für andere Sprachen sind ähnlich.\n\n## Verwenden von Modellpaketen zum Analysieren von Aufrufen von benutzerdefinierten Abhängigkeiten\n\nSie können veröffentlichte Modellpakete in eine code scanning-Analyse mit der Option `--model-packs` einschließen. Beispiel:\n\n```shell\n$ codeql database analyze /codeql-dbs/my-company --format=sarif-latest \\\n  --model-packs my-repo/my-java-model-pack \\\n  --output=/temp/my-company.sarif codeql/java-queries\n```\n\nIn diesem Beispiel verwenden die relevanten Abfragen im Standardabfragepaket `codeql/java-queries` die Abhängigkeitsinformationen aus dem Modellpaket, `my-repo/my-java-model-pack`, um nach Sicherheitsrisiken im Code zu suchen, der diese Abhängigkeiten aufruft.\n\nSie können mehrere veröffentlichte Modellpakete in einer Analyse angeben.\n\nWeitere Informationen zum Schreiben eigener Modellpakete findest du unter [Erstellen und Arbeiten mit CodeQL-Paketen](/de/code-security/codeql-cli/using-the-advanced-functionality-of-the-codeql-cli/creating-and-working-with-codeql-packs#creating-a-model-pack).\n\n### Informationen zu veröffentlichten Paketen\n\nWenn ein Paket für das Verwenden in Analysen veröffentlicht wird, überprüfen die Befehle `codeql pack create` oder `codeql pack publish`, ob der Inhalt vollständig ist, und fügt diesem auch einige zusätzliche Inhalte hinzu:\n\n* Bei Abfragepaketen: eine Kopie aller Bibliothekspakete, von denen das Abfragepaket abhängig ist, in den genauen Versionen, mit denen es entwickelt wurde. Benutzer\\*innen des Abfragepakets müssen diese Bibliothekspakete nicht separat herunterladen.\n\n* Bei Abfragepaketen: vorkompilierte Darstellungen der einzelnen Abfragen. Diese können schneller ausgeführt werden, als wenn die QL-Quelle für die Abfrage bei jeder Analyse kompiliert werden müsste.\n\nDie meisten dieser Daten befinden sich in einem Verzeichnis namens `.codeql` im veröffentlichten Paket, doch vorkompilierte Abfragen befinden sich für jede Abfrage in Dateien mit dem Suffix `.qlx` neben der `.ql`-Quelle. Beim Analysieren einer Datenbank mit einer Abfrage aus einem veröffentlichten Paket lädt CodeQL diese Dateien anstelle der `.ql`-Quelle. Wenn du den Inhalt eines *veröffentlichten* Pakets ändern musst, entferne alle `.qlx`-Dateien, da diese möglicherweise verhindern, dass Änderungen an den `.ql`-Dateien wirksam werden."}