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 findest du unter Verwenden größerer Runner 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 finden Sie unter Empfohlene Hardwareressourcen zum Ausführen von CodeQL.
{ % elsif ghes % }
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 in dem Workflow-Auszug in 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.
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.