Skip to main content

Analyse der Codeüberprüfung dauert zu lange

Sie können Ihre CodeQL-Konfiguration feinabstimmen, um die Analysezeit zu minimieren.

Es gibt mehrere Ansätze, um die Buildzeit bei einer code scanning-Analyse zu reduzieren.

Erhöhen des Arbeitsspeichers oder der Kerne

Wenn Sie GitHub-gehostete Runner für Ihre code scanning-Analyse verwenden, sollten Sie ein Upgrade auf größere Runner in Betracht ziehen. Dabei handelt es sich um von GitHub gehostete Runner mit mehr RAM, CPU und Speicherplatz als bei Standardrunnern. Weitere Informationen zu größere Runner und code scanning finden Sie unter „Informationen zu großen Runnern“ und „Konfigurieren größerer Runner für die Standardeinrichtung“.

Wenn Sie selbstgehostete Runner für die Ausführung der code scanning-Analyse verwenden, können Sie den Arbeitsspeicher oder die Anzahl der Kerne für diese Runner erhöhen. Wenn Sie CodeQL mit erweiterten Einstellungen für Ihre Analyse verwenden, überprüfen Sie die empfohlenen Hardware-Ressourcen für CodeQL, um sicherzustellen, dass Ihre selbst gehosteten Runner diese Anforderungen erfüllen. Weitere Informationen findest du unter Empfohlene Hardwareressourcen zum Ausführen von CodeQL.

Verwenden von Matrixbuilds zum Parallelisieren der Analyse

Um die Analyse von Workflows zu beschleunigen, die mehrere Jobs umfassen, können Sie Ihren Workflow so ändern, dass er eine Matrix verwendet. Weitere Informationen findest du unter Verwenden von Matrizen für deine Aufträge.

Der standardmäßige CodeQL-Analyseworkflow verwendet eine Matrix von Sprachen, wodurch die Analyse jeder Sprache parallel erfolgt. Wenn Sie jedoch CodeQL mit erweitertem Setup verwenden und die Sprachen, die Sie analysieren möchten, direkt im Schritt „Initialize CodeQL“ angegeben haben, erfolgt die Analyse der einzelnen Sprachen nacheinander. In dieser Konfiguration können Sie Ihre Analyse beschleunigen, indem Sie Ihren Advanced Setup-Workflow dahingehend ändern, dass eine Matrix verwendet wird. Eine Workflow-Extraktion als Beispiel finden Sie unter „Einige Sprachen wurden nicht mit dem erweiterten Setup von CodeQL analysiert“.

Reduzieren der Menge an Code, der in einem einzelnen Workflow analysiert wird

Die Analysezeit ist in der Regel proportional zur Menge des analysierten Codes. Wenn Sie CodeQL mit Advanced Setup verwenden, können Sie die Analysezeit verringern, indem Sie die Menge des gleichzeitig analysierten Codes reduzieren. Wenn Sie z. B. Testcodes ausschließen oder die Analysen in mehrere Workflows aufteilen, die nur eine Teilmenge Ihres Codes gleichzeitig analysieren.

Bei kompilierten Sprachen wie Java, Kotlin, Go, C, C++ und C# analysiert CodeQL den gesamten Code, der während der Workflowausführung erstellt wurde. Um den Umfang des analysierten Codes einzuschränken, kompilier nur den Code, den du analysieren möchtest, indem du deine eigenen Buildschritte in einem run-Block angibst. Durch die Angabe deiner eigenen Buildschritte mithilfe der Filter paths und paths-ignore für die Ereignisse pull_request und push kannst du die Schritte wie gewünscht kombinieren, um sicherzustellen, dass dein Workflow nur ausgeführt wird, wenn der bestimmte Code geändert wird. Weitere Informationen findest du unter Workflowsyntax für GitHub Actions.

Für Sprachen wie JavaScript, Python und TypeScript, die CodeQL ohne Kompilierung des Quellcodes analysiert, kannst du zusätzliche Konfigurationsoptionen angeben, um den Umfang des zu analysierenden Codes zu begrenzen. Weitere Informationen findest du unter Anpassen des erweiterten Setups für Codeüberprüfung.

Wenn Sie Ihre CodeQL-Analyse wie zuvor beschrieben in mehrere Workflows aufteilst, sollten Sie weiterhin mindestens einen Workflow verwenden, der nach einem schedule ausgeführt wird und den gesamten Codes in deinem Repository analysiert. Da CodeQL die Datenflüsse zwischen Komponenten analysiert, werden einige komplexe Sicherheitsverhaltensweisen möglicherweise nur bei einem vollständigen Build erkannt.

Ausführung nur während eines schedule-Ereignisses

Möglicherweise stellen Sie fest, dass sich Ihre Analyse während push oder pull_request-Ereignissen verlangsamt. In diesem Fall können Sie die Analyse so festlegen, dass sie nur für das schedule-Ereignis getriggert wird. Wenn Sie CodeQL für Ihre code scanning-Analyse verwenden, können Sie dies mit einem Advanced Setup-Workflow konfigurieren, aber nicht im Standard-Setup. Weitere Informationen findest du unter Grundlegendes zu GitHub Actions.

Überprüfen, welche Abfragen oder Regeln der Workflow ausführt

Eine weitere Möglichkeit zum Verringern der Analysezeit besteht darin, nur die Abfragen oder Regeln auszuführen, die Sie in Workflows berücksichtigen, die auf Pull Requests ausgeführt werden. Wenn Sie für code scanning ein Tool eines Drittanbieters verwenden, sollten Sie die Dokumentation des Tools zu Rate ziehen.

In CodeQL sind zwei Standard-Abfrage-Sammlungen für jede Sprache verfügbar. Wenn du den CodeQL-Datenbankbuild optimiert hast und der Prozess noch zu lang ist, kannst du die Anzahl der ausgeführten Abfragen verringern. Die Standardmäßige Abfrage-Sammlung wird automatisch ausgeführt: Sie bietet die bestmögliche Kompromittierung zwischen Qualität und Geschwindigkeit.

Wenn Sie CodeQL mit Advanced Setup verwenden, können Sie zusätzlich zu den Standardabfragen weitere Abfragen oder Abfrage-Sammlungen ausführen. Überprüfe, ob der Workflow eine zusätzliche Abfragesammlung oder zusätzliche Abfragen definiert, die mit dem queries-Element ausgeführt werden sollen. Du kannst die zusätzliche Abfragesammlung oder Abfragen testweise deaktivieren. Weitere Informationen findest du unter Anpassen des erweiterten Setups für Codeüberprüfung.