Informationen zu diesem Fehler
SARIF file is too large
SARIF results file is too large
SARIF upload is rejected (bigger than allowed size for zip archive)
SARIF ZIP upload is too large
A fatal error occurred: SARIF file is too large
413: Payload Too Large
Einer dieser Fehler wird gemeldet, wenn ein Prozess versucht, eine SARIF-Datei hochzuladen, die größer als die maximale Größe von 10 MB ist. Code scanning akzeptiert keine Dateien oberhalb dieser Größe. Es gibt verschiedene Möglichkeiten, die Anzahl der für den Upload in code scanning generierten Ergebnisse zu reduzieren.
Dieser Fehler wird möglicherweise für SARIF-Dateien angezeigt, die von CodeQL oder von Drittanbieter-Analysetools generiert wurden. Informationen zu den Grenzwerten für Uploads findest du im Artikel zu code scanning unter SARIF-Unterstützung für die Codeüberprüfung.
Bestätigen der Fehlerursache
Es gibt viele mögliche Ursachen für sehr große SARIF-Ergebnisdateien.
SARIF-Dateikomprimierung
Sieh dir die Ergebnisdatei an, die von code scanning abgelehnt wurde, um festzustellen, ob eine der folgenden Möglichkeiten zutrifft:
- Die SARIF-Datei wurde mithilfe von gzip komprimiert.
- Die komprimierte Datei ist kleiner als 10 MB.
Wenn die Datei nicht mithilfe von gzip komprimiert wurde, versuche die Datei zu komprimieren, bevor du den Uploadvorgang erneut ausführst. Wenn die komprimierte Datei immer noch zu groß ist, musst du die Analyse so konfigurieren, dass eine kleinere Menge von Ergebnissen generiert wird.
Analysierte Codemenge
Wenn zu viele Ergebnisse vorliegen, solltest du die Analyse so konfigurieren, dass nur der wichtigste Code analysiert wird.
- Überprüfe bei interpretierten Sprachen, ob das Repository viele Tests, Demos oder Abhängigkeiten von Anbietern enthält, bei denen das Beheben von Warnungen eine niedrigere Priorität hat. Versuche, diesen Code aus der Analyse auszuschließen. Weitere Informationen findest du unter Ausschließen von Code aus der Analyse für interpretierte Sprachen.
- Überprüfe bei kompilierten Sprachen, ob der Buildprozess mehr als eine Variante des Codes generiert (z. B. Ziele für mehrere Betriebsumgebungen oder Architekturen). Versuche zunächst, nur eine Variante des Codes zu analysieren. Weitere Informationen findest du unterOptimieren des Buildbefehls.
Anzahl der ausgeführten Abfragen
Wenn immer noch zu viele Ergebnisse erzeugt werden, überprüfe, wie viele Abfragen du zum Analysieren des Codes verwendest. Versuche, weniger Abfragen auszuführen. Du kannst wieder Abfragen hinzufügen, wenn die anfänglichen Warnungen behoben sind. Für die CodeQL-Analyse könntest du beispielsweise nur die Standardabfragen ausführen. Weitere Informationen finden Sie unter Anpassen des erweiterten Setups für das Codescanning.
Anzahl der von Abfragen gefundenen Ergebnisse
Manchmal meldet eine einzelne Abfrage viele Ergebnisse, weil die Codebasis einen bestimmten Codierungsstil aufweist oder weil die Analyse eine bestimmte Bibliothek nicht versteht. Du kannst die Ergebnisdatei in einem SARIF-Viewer überprüfen, um die Verteilung der Ergebnisse anzuzeigen. Beispiel: https://microsoft.github.io/sarif-web-component/.
- Überprüfen Sie, ob die Ergebnisse von Warnungen dominiert werden, die durch eine einzige Abfrage identifiziert wurden. Versuche, diese Abfrage aus der Analyse auszuschließen. Du kannst sie wieder hinzufügen, wenn andere Warnungen behoben wurden. Weitere Informationen zur CodeQL-Abfragekonfiguration findest du unterAusschließen einer Abfrage aus der Analyse.
- Überprüfe, ob Dataflowabfragen mit vielen tiefen Pfaden vorhanden sind. Versuche, Dataflowpfade aus der Ausgabe wegzulassen. Weitere Informationen zur CodeQL-Analysekonfiguration findest du unterWeglassen von Dataflowpfaden aus der Ausgabe.
Beheben des Problems
Die folgenden Optionen sind nach Komplexität geordnet. Du musst die Konfiguration überarbeiten, um die Anzahl der Ergebnisse auf eine verwaltbare Menge zu reduzieren. Sobald du all diese Warnungen behoben hast, kannst du die Konfiguration aktualisieren, um die Analyse auf weitere Codezeilen oder weitere Abfragen zu erweitern.
Ausschließen von Code aus der Analyse für interpretierte Sprachen
Das Ausschließen von Nichtproduktionscode aus der Analyse ist eine einfache Möglichkeit, die Größe der Ergebnisdatei zu reduzieren.
- Erweitertes CodeQL-Setup für code scanning: Verwende
paths
undpaths-ignore
in der Workflowdatei, um anzugeben, welcher Code analysiert werden soll. Weitere Informationen finden Sie unter Anpassen des erweiterten Setups für das Codescanning. - CodeQL CLI:
database create
: Erstelle eine YAML-Konfigurationsdatei für die Codeüberprüfung mit derselben Syntax, um den zu analysierenden Code zu definieren. Aktualisiere den Befehldatabase create
, um diese Konfigurationsdatei mit der Option--codescanning-config
aufzurufen. Weitere Informationen finden Sie unter Anpassen des erweiterten Setups für das Codescanning.
Optimieren des Buildbefehls
Die Verwendung eines Buildbefehls, der nur eine Variante kompiliert, ist eine einfache Möglichkeit, die Größe der Ergebnisdatei zu reduzieren.
- ErweitertesCodeQL-Setup für code scanning: Aktualisiere die Workflowdatei, um den ausgewählten Buildbefehl anzugeben. Weitere Informationen finden Sie unter CodeQL-Codeüberprüfung für kompilierte Sprachen.
- CodeQL CLI:
database create
: Gib den ausgewählten Buildbefehl an, indem du entweder den Befehldatabase create
mit der Option--command
aufrufst oder den Buildbefehl in einer YAML-Konfigurationsdatei definierst, um die Codeüberprüfung auszuführen und die Datei mithilfe der Option--codescanning-config
aufzurufen. Weitere Informationen finden Sie unter Vorbereiten des Codes für die CodeQL-Analyse.
Definieren der auszuführenden Abfragesammlung
Möglicherweise führst du bereits nur die Standardsicherheitsabfragen aus, aber es lohnt sich, dies zu überprüfen.
- Erweitertes CodeQL-Setup für code scanning: Suche in der Workflowdatei nach dem Schlüsselwort
queries
. Wenn es nicht vorhanden ist, wird nur die Standardabfragesammlung ausgeführt. Wenn es vorhanden ist, definiert es, welche Abfragen ausgeführt werden sollen. Versuche, diese Zeile der Workflowdatei auszukommentieren. Weitere Informationen finden Sie unter Anpassen des erweiterten Setups für das Codescanning. - CodeQL CLI:
database analyze
: Suche im Datenbankanalysebefehl nach Pfaden, die Abfragen, Abfragesammlungen oder Abfragepakete angeben. Wenn keine vorhanden sind, wird nur die Standardabfragesammlung ausgeführt. Wenn welche vorhanden sind, definieren sie, welche Abfragen ausgeführt werden sollen. Du kannst versuchen, sie aus dem Aufruf zu entfernen. Weitere Informationen finden Sie unter Analysieren des Codes mit CodeQL-Abfragen.
Ausschließen einer Abfrage aus der Analyse
Wenn die Ergebnisse von den Ergebnissen für eine einzelne Regel dominiert werden, kann das Ausschließen der Regel aus der Analyse die beste Lösung sein.
- Erweitertes CodeQL-Setup für code scanning: Verwende das Schlüsselwort
query-filters
, um eine oder mehrere Abfragen aus der Analyse auszuschließen. Weitere Informationen finden Sie unter Anpassen des erweiterten Setups für das Codescanning. - CodeQL CLI:
database analyze
: Aktualisiere den Datenbankanalysebefehl, um eine oder mehrere Abfragen aus der Analyse auszuschließen. Weitere Informationen finden Sie unter Analysieren des Codes mit CodeQL-Abfragen.
Alternativ dazu kannst du ein Tool wie die filter-sarif-Aktion verwenden, um die SARIF-Datei neu zu schreiben und bestimmte Erkennungen anhand eines Ausschlussmusters auszuschließen.
Weglassen von Dataflowpfaden aus der Ausgabe
Wenn in den SARIF-Ergebnissen viele tiefe Codepfade hervorgehoben sind, kannst du die Anzahl der für die einzelnen Warnungen gemeldeten Pfade reduzieren.
-
Erweitertes CodeQL-Setup für code scanning: Aktualisiere den
analyze
-Schritt, um die Anzahl der Pfade auf maximal 1 oder 0 zu begrenzen.- name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v2 env: CODEQL_ACTION_EXTRA_OPTIONS: '{"database":{"interpret-results":["--max-paths", 1]}}'
-
CodeQL CLI:
database analyze
: Aktualisiere den Datenbankanalysebefehl, und schließe das Flag--max-paths=1
ein. Weitere Informationen findest du unter database analyze.
Note
Die Einstellung max-paths
wirkt sich auf die Ergebnisse aller Dataflowabfragen aus.