Skip to main content

Analyse der Codeüberprüfung dauert zu lange

Du kannst CodeQL optimieren, um die Analysezeit zu minimieren.

Wenn die Ausführung deines Builds mit der CodeQL-Analyse zu lange dauert, gibt es mehrere Ansätze, um die Buildzeit zu reduzieren.

Erhöhen des Arbeitsspeichers oder der Kerne

Wenn du selbstgehostete Runner für die Ausführung der CodeQL-Analyse verwendest, kannst du den Arbeitsspeicher oder die Anzahl der Kerne für diese Runner erhöhen.

Verwenden von Matrixbuilds zum Parallelisieren der Analyse

Der standardmäßige CodeQL-Analyseworkflow verwendet eine Matrix von Sprachen, wodurch die Analyse jeder Sprache parallel erfolgt. Wenn du die zu analysierenden Sprachen direkt im Schritt „Initialize CodeQL“ (CodeQL initialisieren) angegeben hast, erfolgt die Analyse jeder Sprache sequenziell. Um die Analyse mehrerer Sprachen zu beschleunigen, ändere deinen Workflow so, dass eine Matrix verwendet wird. Weitere Informationen sind unter „Workflowextraktion“ in „Einige Sprachen wurden nicht mit dem erweiterten Setup von CodeQL analysiert“ zu finden.

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

Die Analysezeit ist in der Regel proportional zur Menge des analysierten Codes. Du kannst die Analysezeit reduzieren, indem du die Menge des gleichzeitig zu analysierenden Codes reduzierst. Schließe hierzu Testcode aus, oder teile die Analyse in mehrere Workflows auf, die gleichzeitig jeweils nur eine Teilmenge deines Codes 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 du deine Analyse wie zuvor beschrieben in mehrere Workflows aufteilst, solltest du 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

Wenn die Ausführung deiner Analyse während push- oder pull_request-Ereignissen noch zu langsam ist, solltest du nur eine Analyse für das schedule-Ereignis auslösen. Weitere Informationen findest du unter Grundlegendes zu GitHub Actions.

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

Standardmäßig stehen für jede Sprache drei Hauptabfragesammlungen zur Verfügung. Wenn du den CodeQL-Datenbankbuild optimiert hast und der Prozess noch zu lang ist, kannst du die Anzahl der ausgeführten Abfragen verringern. Die Standardabfragesammlung wird automatisch ausgeführt. Sie enthält die schnellsten Sicherheitsabfragen mit den niedrigsten Raten falsch positiver Ergebnisse.

Möglicherweise werden zusätzlich zu den Standardabfragen weitere Abfragen oder Abfragesammlungen ausgeführt. Ü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 sind unter „Anpassen des erweiterten Setups für Codeüberprüfung“ zu finden.

Hinweis: Wenn du die security-extended- oder security-and-quality-Abfragesuite für JavaScript ausführst, verwenden einige Abfragen experimentelle Technologie. Weitere Informationen sind unter „Informationen zu Codeüberprüfungswarnungen“ zu finden.