Einige Benutzer bevorzugen es, direkt mit CodeQL Abfragequellen zu arbeiten, um an freigegebenen Open Source-Abfragen zu arbeiten oder einen Beitrag zu leisten.
1. Herunterladen des Tar-Archivs CodeQL CLI
Das CodeQL CLI-Downloadpaket ist ein tar-Archiv, das Tools, Skripts und verschiedene für CodeQL spezifische Dateien enthält. Wenn du keine GitHub Enterprise-Lizenz besitzt, stimmst du mit dem Herunterladen dieses Archivs den GitHub CodeQL-Geschäftsbedingungen zu.
Du solltest das CodeQL-Paket aus https://github.com/github/codeql-action/releases herunterladen. Das Paket enthält Folgendes:
- CodeQL CLI product
- Eine kompatible Version der Abfragen und Bibliotheken von https://github.com/github/codeql
- Vorkompilierte Versionen aller im Paket enthaltenen Abfragen
Hinweis
Für GitHub Enterprise Server 3.15 wird die CodeQL CLI-Version 2.18.4 empfohlen.
Sie sollten immer das CodeQL-Bundle verwenden. Dies stellt Kompatibilität und weitaus bessere Leistung sicher, als ein separater Download von CodeQL CLI und Check-Out der CodeQL-Abfragen. Wenn du die CLI nur auf einer bestimmten Plattform ausführst, lade die entsprechende codeql-bundle-PLATFORM.tar.zst-Datei herunter. Alternativ kannst du codeql-bundle.tar.zst herunterladen. Diese Datei enthält die CLI für alle unterstützten Plattformen.
Es gibt auch tar.gz-Varianten des Bundles, die mit den tar.zst-Varianten identisch sind, außer dass, sie mit dem weniger effizienten Gzip-Algorithmus komprimiert sind. Der einzige Grund zum Herunterladen der tar.gz-Varianten ist, wenn Sie ältere Dekomprimierungstools verwenden, die den Zstandard-Komprimierungsalgorithmus nicht unterstützen.
2. Erstellen eines neuen CodeQL Verzeichnisses
Erstelle ein neues Verzeichnis, in dem du die CLI und alle Abfragen und Bibliotheken platzieren kannst, die du verwenden möchtest. Beispiel: $HOME/codeql-home.
Die integrierten Suchvorgänge der CLI suchen automatisch in allen gleichgeordneten Verzeichnissen nach den Dateien, die bei der Datenbankerstellung und -analyse verwendet werden. Wenn diese Komponenten in einem eigenen Verzeichnis gespeichert werden, wird verhindert, dass die CLI nicht verwandte gleichgeordnete Verzeichnisse durchsucht. Gleichzeitig wird sichergestellt, dass alle Dateien verfügbar sind, ohne weitere Optionen in der Befehlszeile anzugeben.
3. Abrufen einer lokalen Kopie der CodeQL Abfragen
Das CodeQL Repository enthält die Abfragen und Bibliotheken, die für CodeQL die Analyse aller unterstützten Sprachen erforderlich sind.
Klone eine Kopie dieses Repositorys in codeql-home.
Der Stamm des geklonten Repositorys trägt standardmäßig den Namen codeql.
Benennen Sie diesen Ordner codeql-repo um, um Konflikte mit dem Ordner zu vermeiden, den CodeQL CLI Sie in Schritt 1 extrahieren möchten. Wenn du Git in der Befehlszeile verwendest, kannst du das Repository in einem einzigen Schritt klonen und umbenennen, indem du git clone git@github.com:github/codeql.git codeql-repo im codeql-home-Ordner ausführst.
Innerhalb dieses Repositories sind die Abfragen und Bibliotheken in CodeQL organisiert. Pakete. Zusammen mit den Abfragen selbst enthalten CodeQL Pakete wichtige Metadaten, die CodeQL CLI angeben, wie die Abfragedateien verarbeitet werden. Weitere Informationen findest du unter Erstellen und Arbeiten mit CodeQL-Paketen.
Hinweis
Es gibt verschiedene Versionen der CodeQL Abfragen, die für unterschiedliche Benutzer verfügbar sind. Überprüfe die richtige Version für deinen Anwendungsfall:
- Für die Abfragen, die mit der neuesten CodeQL CLI Version verwendet werden sollen, sehen Sie sich den getaggten Branch
codeql-cli/latestan. Sie sollten diesen Zweig für Datenbanken verwenden, die Sie entweder mit dem CodeQL CLI erstellt oder kürzlich von GitHub heruntergeladen haben. - Für die aktuellsten CodeQL Abfragen schauen Sie sich den
mainBranch an. Diese Branch repräsentiert die neueste Version der Analyse von CodeQL.
4. Extrahieren des Tar-Archivs CodeQL CLI
Extrahieren Sie das tar-Archiv in das Verzeichnis, das Sie in Schritt 2 erstellt haben.
Wenn beispielsweise der Pfad zu Ihrer Kopie des CodeQL Repositorys lautet $HOME/codeql-home/codeql-repo, extrahieren Sie die CLI in $HOME/codeql-home/.
5. Starten von codeql
Nach der Extraktion kannst du CodeQL-Prozesse ausführen, indem du die ausführbare codeql-Datei auf verschiedene Arten ausführst:
- Indem du
<extraction-root>/codeql/codeqlausführst, wobei<extraction-root>der Ordner ist, in dem du das CodeQL CLI-Paket extrahiert hast - Indem du
<extraction-root>/codeqlzu deinemPATHhinzufügst, damit du die ausführbare Datei einfach alscodeqlausführen kannst
An diesem Punkt kannst du die CodeQL-Befehle ausführen. Eine vollständige Liste der CodeQL CLI-Befehle findest du unter Leitfaden zu CodeQL-CLI-Befehlen.
6. Überprüfen Sie Ihr CodeQL CLI-Setup
CodeQL CLI verfügt über Unterbefehle, die Sie ausführen können, um zu überprüfen, ob Sie zum Erstellen und Analysieren von Datenbanken ordnungsgemäß eingerichtet sind:
- Führen Sie
codeql resolve languagesaus, um anzuzeigen, welche Sprachen für die Datenbankerstellung verfügbar sind. Dadurch werden die sprachen aufgeführt, die standardmäßig in Ihrem CodeQL CLI Paket unterstützt werden. - Führen Sie die Ausführung
codeql resolve qlpacksaus, um anzuzeigen, welche CodeQL Pakete die CLI finden kann. Dadurch werden die Namen aller direkt für die CodeQL CLI verfügbaren CodeQL Pakete angezeigt. Dies sollte Folgendes umfassen:- Abfragepakete für jede unterstützte Sprache, z. B
codeql/{language}-queries. Diese Pakete enthalten die Standardabfragen, die für jede Analyse ausgeführt werden. - Bibliothekspakete für jede unterstützte Sprache, z. B.
codeql/{language}-all. Diese Pakete enthalten Abfragebibliotheken, z. B. Ablaufsteuerungs- und Datenflussbibliotheken, die für Abfrageautoren nützlich sein können. - Beispielpakete für jede unterstützte Sprache, z. B
codeql/{language}-examples. Diese Pakete enthalten nützliche Codeausschnitte von CodeQL, die für Abfrageersteller hilfreich sein können. - Legacypakete, die sicherstellen, dass benutzerdefinierte Abfragen und Bibliotheken, die mit älteren Produkten erstellt wurden, mit Ihrer Version kompatibel CodeQLsind.
- Abfragepakete für jede unterstützte Sprache, z. B