Skip to main content

SARIF-Ergebnisdatei zu groß

Sie können keine SARIF-Ergebnisdatei mit mehr als 10 MB auf code scanning hochladen. 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 dateien über dieser Größe werden nicht akzeptiert. Es gibt mehrere Möglichkeiten, die Anzahl der Ergebnisse zu reduzieren, die zum Hochladen in code scanning erzeugt werden.

Dieser Fehler könnte für SARIF-Dateien angezeigt werden, die von CodeQL oder von Analysetools von Drittanbietern generiert wurden. Informationen zu den Beschränkungen für Uploads auf code scanning finden Sie 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

Sehen Sie sich die Ergebnisdatei an, die von code scanning abgelehnt wurde, um festzustellen, ob:

  • 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 finden Sie 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 finden Sie unter Optimieren 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. Beispielsweise könnten Sie für CodeQL die Analyse nur die Standardsuite von Abfragen ausführen. Weitere Informationen finden Sie unter Workflowkonfigurationsoptionen für die Codeüberprüfung.

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 finden Sie unter Ausschließ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 finden Sie unter Auslassen von Datenflusspfaden 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.

  • CodeQL Erweitertes Setup für code scanning: Verwenden paths und paths-ignore in der Workflowdatei, um anzugeben, welcher Code analysiert werden soll. Weitere Informationen finden Sie unter Workflowkonfigurationsoptionen für die Codeüberprüfung.
  • CodeQL CLI database create: Erstellen Sie eine YAML-Konfigurationsdatei für die Codeüberprüfung mit derselben Syntax, um zu definieren, welcher Code analysiert werden soll. Aktualisiere den Befehl database create, um diese Konfigurationsdatei mit der Option --codescanning-config aufzurufen. Weitere Informationen finden Sie unter Workflowkonfigurationsoptionen für die Codeüberprüfung.

Optimieren des Buildbefehls

Die Verwendung eines Buildbefehls, der nur eine Variante kompiliert, ist eine einfache Möglichkeit, die Größe der Ergebnisdatei zu reduzieren.

  • CodeQL Erweitertes Setup für code scanning: Aktualisieren Sie 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: Geben Sie den ausgewählten Buildbefehl entweder durch Aufrufen des database create Befehls mit der --command Option an, oder definieren Sie den Buildbefehl in einer YAML-Konfigurationsdatei zum Scannen von Code und Aufrufen der Datei mithilfe der --codescanning-config Option. 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.

  • CodeQL Erweiterte Konfiguration für code scanning: Prüfen Sie die Workflowdatei auf das 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 Workflowkonfigurationsoptionen für die Codeüberprüfung.
  • CodeQL CLI database analyze: Überprüfen Sie den Datenbankanalysebefehl auf alle Pfade, 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.

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.

  • CodeQL Erweitertes Setup für code scanning: Aktualisieren Sie den analyze Schritt, um die Anzahl der Pfade auf maximal 1 oder Null zu beschränken.

    - name: Perform CodeQL Analysis
      uses: github/codeql-action/analyze@v4
      env: 
        CODEQL_ACTION_EXTRA_OPTIONS: '{"database":{"interpret-results":["--max-paths", 1]}}'
    
  • CodeQL CLI database analyze: Aktualisieren Sie den Datenbankanalysebefehl so, dass es das --max-paths=1 Flag enthält. Weitere Informationen finden Sie unter Datenbankanalyse.

Hinweis

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

Weiterführende Lektüre