Skip to main content

SARIF-Ergebnisdatei zu groß

Eine SARIF-Ergebnisdatei, die größer als 10 MB ist, kann nicht in code scanning hochgeladen werden. Hier findest du Möglichkeiten, eine kleinere Datei mit den wichtigsten Ergebnissen zu generieren.

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 findest du 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 und paths-ignore in der Workflowdatei, um anzugeben, welcher Code analysiert werden soll. Weitere Informationen findest du 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 Befehl database create, um diese Konfigurationsdatei mit der Option --codescanning-config aufzurufen. Weitere Informationen findest du 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 findest du unter CodeQL-Codeüberprüfung für kompilierte Sprachen.
  • CodeQL CLI: database create: Gib den ausgewählten Buildbefehl an, indem du entweder den Befehl database 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 findest du 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 findest du 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 findest du 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.

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.

Hinweis: Die Einstellung max-paths wirkt sich auf die Ergebnisse aller Dataflowabfragen aus.

Weitere Informationsquellen