{"meta":{"title":"Erstellen und Arbeiten mit CodeQL-Paketen","intro":"Sie können CodeQL Pakete verwenden, um Abfragen und Bibliotheken zu erstellen, zu teilen, darauf zu basieren und CodeQL auszuführen.","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/creating-and-working-with-codeql-packs","title":"Erstellen und Arbeiten mit CodeQL-Paketen"}],"documentType":"article"},"body":"# Erstellen und Arbeiten mit CodeQL-Paketen\n\nSie können CodeQL Pakete verwenden, um Abfragen und Bibliotheken zu erstellen, zu teilen, darauf zu basieren und CodeQL auszuführen.\n\n## Informationen über CodeQL-Pakete und CodeQL CLI\n\n```\n          CodeQL Pakete werden verwendet, um Abfragen und Bibliotheken zu erstellen, zu teilen, davon abhängig zu sein und auszuführen CodeQL .\n```\n\nSie können den `pack` Befehl im CodeQL CLI Befehl verwenden, um Pakete zu erstellen CodeQL , Abhängigkeiten zu Paketen hinzuzufügen und Abhängigkeiten zu installieren oder zu aktualisieren. Sie können Pakete auch mit dem CodeQL Befehl veröffentlichen und herunterladen`pack`.\n\n## Erstellen eines Pakets CodeQL\n\nSie können ein CodeQL Paket erstellen, indem Sie den folgenden Befehl aus dem Checkout-Stammverzeichnis Ihres Projekts ausführen:\n\n```shell\ncodeql pack init <scope>/<pack>\n```\n\nDabei müssen Sie festlegen:\n\n* `<scope>`: der Name der Organisation oder des GitHub Benutzerkontos, für die Sie veröffentlichen möchten.\n\n* `<pack>`: Name des Pakets, das Sie erstellen.\n\nDer `codeql pack init` Befehl erstellt die Verzeichnisstruktur und Konfigurationsdateien für ein CodeQL Paket. Der Befehl erstellt standardmäßig ein Abfragepaket. Wenn du ein Bibliothekspaket erstellen möchtest, musst du die `qlpack.yml`-Datei bearbeiten, um die Datei explizit als Bibliothekspaket zu deklarieren, indem du die Eigenschaft `library:true` einschließt.\n\n## Erstellen eines CodeQL Modellpakets\n\n> \\[!NOTE]\n> CodeQL-Modellpakete liegen derzeit als öffentliche Vorschau vor und können noch geändert werden. Modellpakete werden für die C/C++, C#, Java/Kotlin, Python, Ruby und Rust-Analyse unterstützt.\n>\n> Der CodeQL-Modell-Editor in der CodeQL-Erweiterung für Visual Studio Code unterstützt Modellierungsabhängigkeiten für  C#, Java/Kotlin, Python und Ruby.\n\nModellpakete können zum Erweitern code scanning der Analyse verwendet werden, um Bibliotheken und Frameworks zu erkennen, die standardmäßig nicht unterstützt werden. Modellpakete verwenden Datenerweiterungen, die als YAML implementiert werden und beschreiben, wie Daten für neue Abhängigkeiten hinzugefügt werden. Wenn ein Modellpaket angegeben wird, werden die Datenerweiterungen in diesem Paket automatisch zur code scanning Analyse hinzugefügt. Weitere Informationen zu CodeQL Modellpaketen und Datenerweiterungen finden Sie unter [Verwenden des CodeQL-Modell-Editors](/de/code-security/codeql-for-vs-code/using-the-advanced-functionality-of-the-codeql-for-vs-code-extension/using-the-codeql-model-editor).\n\nEin Modellpaket ist ein CodeQL Paket mit den folgenden Merkmalen in der `qlpack.yml` Datei:\n\n* Dieses definiert `library: true`.\n* Es hat keine Abhängigkeiten.\n* Es hat mindestens eine `extensionTargets`.\n* Es verfügt über eine `dataExtensions` Eigenschaft, die auf eine oder mehrere Datenerweiterungsdateien verweist.\n\nEin Modellpaket fügt seine angegebenen Datenerweiterungen in jedes Abfragepaket ein, das in `extensionTargets` benannt ist, wenn es in den angegebenen Versionsbereich fällt. Beispiel:\n\n```yaml\nname: my-repo/my-java-model-pack\nversion: 1.2.3\nextensionTargets:\n  codeql/java-all: ~1.2.3\n  codeql/util: ~4.5.6\ndataExtensions:\n  - models/**/*.yml\n```\n\nIn diesem Beispiel fügt das Modellpaket alle Datenerweiterungen in `models/**/` ein Abfragepaket `codeql/java-all` mit einer Version von `1.2.3` bis zu einschließlich `1.3.0` ein, und in ein Abfragepaket `codeql/util` mit einer Version von `4.5.6` bis zu einschließlich `4.6.0`. Weitere Informationen finden Sie unter [Verwenden der semantischen Versionsverwaltung](https://docs.npmjs.com/about-semantic-versioning#using-semantic-versioning-to-specify-update-types-your-package-can-accept) in der NPM Dokumentation und unter [Spezifikation zur semantischen Versionsverwaltung](https://semver.org/).\n\nNachdem Sie ein Modellpaket erstellt haben, können Sie es auf die gleiche Weise wie andere CodeQL Pakete veröffentlichen. Weitere Informationen finden Sie unter [Veröffentlichen und Verwenden von CodeQL-Paketen](/de/code-security/codeql-cli/using-the-advanced-functionality-of-the-codeql-cli/publishing-and-using-codeql-packs). Anschließend können Sie veröffentlichte Modellpakete in einer code scanning Analyse mit der `--model-packs` Option verwenden. Weitere Informationen finden Sie unter [Anpassen der Analyse mit CodeQL-Paketen](/de/code-security/codeql-cli/getting-started-with-the-codeql-cli/customizing-analysis-with-codeql-packs#using-model-packs-to-analyze-calls-to-custom-dependencies).\n\n## Hinzufügen und Installieren von Abhängigkeiten zu einem CodeQL Paket\n\n> \\[!NOTE]\n> Dies wird nur für CodeQL Abfrage- und Bibliothekspakete unterstützt.\n\nSie können Abhängigkeiten von CodeQL Paketen mithilfe des Befehls `codeql pack add`hinzufügen. Du musst den Bereich, den Namen und (optional) einen kompatiblen Versionsbereich angeben.\n\n```shell\ncodeql pack add <scope>/<name>@x.x.x <scope>/<other-name>\n```\n\nWenn du keinen Versionsbereich angibst, wird die neueste Version hinzugefügt. Andernfalls wird die neueste Version hinzugefügt, die den angeforderten Bereich erfüllt.\n\nDieser Befehl aktualisiert die `qlpack.yml`-Datei mit den angeforderten Abhängigkeiten und lädt sie in den Paketcache herunter. Beachte, dass mit diesem Befehl die Datei neu formatiert wird und alle Kommentare entfernt werden.\n\nDu kannst die `qlpack.yml`-Datei auch manuell bearbeiten, um Abhängigkeiten einzuschließen, und dann kannst du die Abhängigkeiten mit dem folgenden Befehl installieren:\n\n```shell\ncodeql pack install\n```\n\nMit diesem Befehl werden alle Abhängigkeiten in den freigegebenen Cache auf dem lokalen Datenträger heruntergeladen.\n\n> \\[!NOTE]\n>\n> * Durch Ausführen der Befehle `codeql pack add` und `codeql pack install` wird die `codeql-pack.lock.yml`-Datei generiert oder aktualisiert. Diese Datei sollte in die Versionskontrolle eingecheckt werden. Die `codeql-pack.lock.yml`-Datei enthält die genauen Versionsnummern, die vom Paket verwendet werden. Weitere Informationen finden Sie unter [Informationen zu codeql-pack.lock.yml-Dateien](/de/code-security/codeql-cli/getting-started-with-the-codeql-cli/customizing-analysis-with-codeql-packs##about-codeql-packlockyml-files).\n> * Standardmäßig installiert `codeql pack install` Abhängigkeiten von der Container registry auf GitHub.com. Sie können Abhängigkeiten aus einer GitHub Enterprise ServerContainer registry Datei installieren, indem Sie eine `qlconfig.yml` Datei erstellen. Weitere Informationen finden Sie in der [](/de/enterprise-server@3.20/code-security/codeql-cli/using-the-advanced-functionality-of-the-codeql-cli/publishing-and-using-codeql-packs) Dokumentation unter GitHub Enterprise Server.\n\n## Organisieren der Verzeichnisstruktur eines CodeQL Pakets\n\nEin CodeQL-Paket muss eine Datei enthalten, die `qlpack.yml` genannt wird und sich im Stammverzeichnis befindet. In der `qlpack.yml` Datei muss das `name:` Feld über einen Wert verfügen, der dem Format folgt `<scope>/<pack>`, wobei `<scope>` es sich um die GitHub Organisation oder das Benutzerkonto handelt, in der das Paket veröffentlicht wird und `<pack>` der Name des Pakets ist.\n\nDarüber hinaus enthalten Abfragepakete und Bibliothekspakete mit CodeQL Tests eine `codeql-pack.lock.yml` Datei, die die aufgelösten Abhängigkeiten des Pakets enthält. Diese Datei wird während eines Aufrufs des Befehls `codeql pack install` generiert, soll nicht manuell bearbeitet werden und sollte deinem Versionskontrollsystem hinzugefügt werden.\n\nDie anderen Dateien und Verzeichnisse innerhalb des Pakets sollten logisch organisiert sein. Hier findest du ein häufiges Beispiel:\n\n* Abfragen werden in Verzeichnissen für bestimmte Kategorien organisiert.\n* Abfragen für bestimmte Produkte, Bibliotheken und Frameworks werden in ihren eigenen Verzeichnissen der obersten Ebene organisiert.\n\n## Anpassen eines heruntergeladenen CodeQL Pakets\n\nDie empfohlene Methode, mit Änderungen an einem Paket zu experimentieren, besteht darin, das Repository mit dem Quellcode zu klonen.\n\nWenn kein Quell-Repository verfügbar ist und Sie Änderungen auf einem paket basieren müssen, das aus dem Container registryPaket heruntergeladen wurde, beachten Sie, dass diese Pakete nach dem Herunterladen nicht geändert oder angepasst werden sollen, und ihr Format kann sich in Zukunft ohne große Ankündigung ändern. Es wird empfohlen, nach dem Herunterladen eines Pakets die folgenden Schritte auszuführen, wenn du den Inhalt ändern musst:\n\n* Ändere den *Namen* des Pakets in `qlpack.yml`, um Verwechslungen mit den Ergebnissen des nicht geänderten Pakets zu vermeiden.\n\n* Entferne alle Dateien namens `*.qlx` in der entpackten Verzeichnisstruktur. Diese Dateien enthalten vorkompilierte Versionen der Abfragen, und in einigen Fällen werden sie von CodeQL gegenüber der geänderten QL-Quelle bevorzugt verwendet."}