Skip to main content

Enterprise Server 3.20 ist derzeit als Release Candidate verfügbar.

Informationen zur CodeQL-Codeüberprüfung für kompilierte Sprachen

Sie erfahren, wie CodeQL kompilierte Sprachen analysiert, welche Build-Optionen zur Verfügung stehen und wie Sie den Datenbankerstellungsprozess bei Bedarf anpassen können.

Wer kann dieses Feature verwenden?

Benutzer*innen mit Schreibzugriff if advanced setup is already enabled

Code scanning ist für die folgenden Repositorytypen verfügbar:

  • Öffentliche Repositorys auf GitHub.com
  • Organisationseigene Repositorys für GitHub Team, GitHub Enterprise Cloud oder GitHub Enterprise Server, wobei GitHub Code Security aktiviert sind.

Informationen zum CodeQL-Analyseworkflow und kompilierten Sprachen

Code scanning arbeitet mit Abfragen gegen eine oder mehrere CodeQL Datenbanken. Jede Datenbank enthält eine Darstellung des Codes, der in einer einzelnen Sprache in Ihrem Repository vorliegt. In den kompilierten Sprachen C/C++, C#, Go, Java, Kotlin, Rust, und Swift müssen oft beim Auffüllen dieser Datenbank zunächst der Code kompiliert und Daten extrahiert werden.

Wenn Sie code scanning aktivieren, erzeugen sowohl das Standard- als auch das erweiterte Setup eine CodeQL Datenbank für die Analyse mit der einfachsten verfügbaren Methode. Für C/C++, C#, Java und Rust wird die Datenbank CodeQL direkt aus der Codebasis generiert, ohne dass ein Build erforderlich ist (none Build-Modus). Für andere kompilierte Sprachen erstellt CodeQL die Codebasis mithilfe des autobuild Buildmodus. Alternativ können Sie im manual Build-Modus explizite Build-Befehle angeben, um nur die Dateien zu analysieren, die von diesen benutzerdefinierten Befehlen erstellt werden.

Sie können das Zwischenspeichern von Abhängigkeiten mit CodeQL verwenden, um Abhängigkeiten als GitHub Actions-Cache zu speichern, anstatt sie aus Registrierungen herunterzuladen. Siehe Informationen zum Zwischenspeichern von Abhängigkeiten für CodeQL weiter unten in diesem Artikel.

CodeQL Build-Modi

Die Aktion CodeQL unterstützt drei verschiedene Build-Modi für kompilierte Sprachen:

  •         `none`: Die CodeQL-Datenbank wird direkt auf der Grundlage der Codebasis erstellt, ohne die Codebasis zu erstellen. (Dies wird für alle interpretierten Sprachen und zusätzlich für C/C++, C#, Java und Rust unterstützt.)
    
  •         `autobuild` - CodeQL erkennt die wahrscheinlichste Erstellungsmethode und nutzt diese, um die Codebasis zu erstellen und eine Datenbank zur Analyse anzulegen (unterstützt für C/C++, C#, Go, Java, Kotlin und Swift).
    
  •         `manual` - Sie definieren die Schritte zum Build der Codebasis, die im Workflow verwendet werden sollen (unterstützt für C/C++, C#, Go, Java, Kotlin und Swift).
    

Informationen über sprachspezifisches autobuild Verhalten, Anforderungen an Runner und Anleitungen für manuelle Builds finden Sie unter CodeQL-Buildoptionen und -schritte für kompilierte Sprachen.

Informationen zum Zwischenspeichern von Abhängigkeiten für CodeQL

Sie können das Zwischenspeichern von Abhängigkeiten mit CodeQL verwenden, um Abhängigkeiten als GitHub Actions-Cache zu speichern, anstatt sie aus Registrierungen herunterzuladen. Dadurch sinkt das Risiko, dass Warnungen verloren gehen, wenn Registrierungen von Drittanbietern nicht gut funktionieren. Außerdem kann es bei Projekten mit einer großen Anzahl von Abhängigkeiten oder Projekten, die mit langsamen Registrierungen arbeiten, zu einer Leistungsverbesserung kommen. Weitere Informationen dazu, wie das Zwischenspeichern von Abhängigkeiten Workflows beschleunigen kann, finden Sie unter Referenz zum Zwischenspeichern von Abhängigkeiten.

Das Zwischenspeichern von Abhängigkeiten funktioniert mit allen Buildmodi und wird von Java, Go und C# unterstützt.

Hinweis

Durch das Zwischenspeichern von Abhängigkeiten werden CodeQL-spezifische Caches gespeichert, die Cachekontingenten für ein Repository unterliegen. Weitere Informationen findest du unter Referenz zum Zwischenspeichern von Abhängigkeiten.