Skip to main content

Analyse der Codeüberprüfung dauert zu lange

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

Note

In diesem Artikel werden die Features beschrieben, die in der Version der CodeQL-Aktion und dem zugehörigen CodeQL CLI-Bundle im ursprünglichen Release dieser Version von GitHub Enterprise Server enthalten sind. Wenn dein Unternehmen eine neuere Version der CodeQL-Aktion verwendet, findest du Informationen zu den neuesten Features in der GitHub Enterprise Cloud-Version dieses Artikels. Informationen zur Verwendung der aktuellen Version finden Sie unter Konfigurieren der Codeüberprüfung für Ihre Anwendung.

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

Erhöhen des Arbeitsspeichers oder der Kerne

Sie können den für Ihre Runner verfügbaren Arbeitsspeicher oder Speicherplatz erhöhen. Wenn Sie CodeQL mit erweiterten Einstellungen für Ihre Analyse verwenden, können Sie die empfohlenen Hardware-Ressourcen für code scanning überprüfen, um sicherzustellen, dass Ihre Runner diese Anforderungen erfüllen. Weitere Informationen finden Sie 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 finden Sie unter Ausführen von Variationen von Aufträgen in einem Workflow.

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. Ein Beispiel findest du im Workflowextrakt 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.

Bei Sprachen wie JavaScript, Python und TypeScript, die CodeQL ohne die Kompilierung des Quellcodes analysiert, können Sie zusätzliche Konfigurationsoptionen angeben, um den Umfang des zu analysierenden Codes zu begrenzen. Weitere Informationen findest du unter Anpassen des erweiterten Setups für das Codescanning.

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 finden Sie 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 finden Sie unter Anpassen des erweiterten Setups für das Codescanning.