Skip to main content

Le fichier de résultats SARIF est trop volumineux

Vous ne pouvez pas charger un fichier de résultats SARIF supérieur à 10 Mo dans code scanning. Explorez les façons de générer un fichier plus petit contenant les résultats les plus impactants.

À propos de cette erreur

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

L’une de ces erreurs est signalée si un processus tente de charger un fichier SARIF supérieur à la taille maximale de 10 Mo. Code scanning n’accepte pas les fichiers au-dessus de cette taille. Il existe plusieurs façons de réduire le nombre de résultats générés pour le chargement vers code scanning.

Vous pouvez voir cette erreur pour les fichiers SARIF générés par CodeQL ou par des outils d’analyse tiers. Pour plus d’informations sur les limites des chargements, consultez code scanning, consultez « Prise en charge de SARIF pour l’analyse du code ».

Confirmation de la cause de l’erreur

Il existe de nombreuses causes potentielles de fichiers de résultats SARIF très volumineux.

Compression de fichier SARIF

Examinez le fichier de résultats qui a été rejeté par code scanning pour voir si :

  • le fichier SARIF a été compressé à l’aide de gzip
  • le fichier compressé est inférieur à 10 Mo

Si le fichier n’a pas été compressé à l’aide de gzip, essayez de le compresser avant de réexécuter le processus de chargement. Si le fichier compressé est encore trop volumineux, vous devez configurer l’analyse pour générer un ensemble de résultats plus petit.

Quantité de code analysé

Si vous avez trop de résultats, vous devez configurer l’analyse pour analyser uniquement le code le plus important.

  • Pour les langages interprétés, vérifiez si le référentiel contient de nombreux tests, démonstrations ou dépendances fournisseur pour lesquelles la correction des alertes est une priorité inférieure. Essayez d’exclure ce code de l’analyse. Pour plus d’informations, consultez « Exclusion du code de l’analyse pour les langages interprétés ».
  • Pour les langages compilés, vérifiez si le processus de build génère plusieurs variantes du code (par exemple, des cibles pour plusieurs environnements d’exploitation ou architectures). Essayez d’analyser une seule variante du code initialement. Pour plus d’informations, consultez « Optimisation de la commande build ».

Nombre d’exécutions des requêtes

Si vous avez encore trop de résultats, vérifiez le nombre de requêtes utilisées pour analyser le code. Essayez d’exécuter moins de requêtes. Vous pouvez réintroduire des requêtes supplémentaires lorsque les alertes initiales sont corrigées. Par exemple, pour l’analyse CodeQL, vous pouvez exécuter uniquement la suite de requêtes par défaut. Pour plus d’informations, consultez « Personnalisation de votre configuration avancée pour l’analyse du code ».

Nombre de résultats trouvés par les requêtes

Parfois, une requête unique signale de nombreux résultats parce que le codebase a un style de codage spécifique ou parce que l’analyse ne comprend pas une bibliothèque particulière. Vous pouvez consulter le fichier de résultats dans une visionneuse SARIF pour voir la distribution des résultats. Par exemple : https://microsoft.github.io/sarif-web-component/.

  • Vérifiez si les résultats sont dominés par les alertes identifiées par une requête unique. Essayez d’exclure cette requête de l’analyse. Vous pouvez le réintroduire lorsque d’autres alertes sont corrigées. Pour plus d’informations sur la configuration des requêtes CodeQL, consultez « Exclusion d’une requête de l’analyse ».
  • Vérifiez s’il existe des requêtes de flux de données avec de nombreux chemins d’accès profonds. Essayez d’omettre les chemins de flux de données de la sortie. Pour plus d’informations sur la configuration de l’analyse CodeQL, consultez « Omission des chemins de flux de données de la sortie ».

Résolution du problème

Les options suivantes sont répertoriées par ordre de complexité. Vous devez réviser la configuration pour réduire le nombre de résultats à une taille gérable. Une fois que vous avez corrigé toutes ces alertes, vous pouvez mettre à jour la configuration pour développer l’analyse afin de couvrir plus de code ou d’exécuter plus de requêtes.

Exclusion du code de l’analyse pour les langages interprétés

L’exclusion du code de non-production de l’analyse est un moyen simple de réduire la taille du fichier de résultats.

Optimisation de la commande build

L’utilisation d’une commande build qui compile une seule variante est un moyen simple de réduire la taille du fichier de résultats.

  • Configuration avancée CodeQL pour code scanning : mettez à jour le fichier de workflow pour spécifier la commande build choisie. Pour plus d’informations, consultez « Analyse du code CodeQL pour les langages compilés ».
  • CodeQL CLI database create : spécifiez la commande build choisie en appelant la commande database create avec l’option --command ou en définissant la commande build dans un fichier de configuration YAML pour l’analyse du code et l’appel du fichier à l’aide de l’option --codescanning-config. Pour plus d’informations, consultez « Préparation de votre code pour l’analyse CodeQL ».

Définition de la suite de requêtes à exécuter

Vous exécutez peut-être déjà uniquement les requêtes de sécurité par défaut, mais cela vaut la peine d’être vérifié.

  • Configuration avancée CodeQL pour code scanning : vérifiez le fichier de workflow à la recherche du mot clé queries. S’il n’est pas présent, seule la suite de requêtes par défaut est exécutée. S’il est présent, il définit les requêtes à exécuter. Essayez de commenter cette ligne du fichier de workflow. Pour plus d’informations, consultez « Personnalisation de votre configuration avancée pour l’analyse du code ».
  • CodeQL CLI database analyze : vérifiez la commande d’analyse de la base de données à la recherche de tous les chemins qui spécifient des requêtes, des suites de requêtes ou des packs de requêtes. Si aucun n’est présent, seule la suite de requêtes par défaut est exécutée. S’il en existe, ils définissent les requêtes à exécuter et vous pouvez essayer de les supprimer de l’appel. Pour plus d’informations, consultez « Analyse de votre code avec des requêtes CodeQL ».

Exclusion d’une requête de l’analyse

Si les résultats sont dominés par les résultats d’une règle unique, l’exclusion de la règle de l’analyse peut être la meilleure solution.

Vous pouvez également utiliser un outil comme l’action filter-sarif pour réécrire le fichier SARIF et exclure des détections spécifiques via un modèle d’exclusion.

Omission des chemins de flux de données de la sortie

S’il existe de nombreux chemins de code profond mis en évidence dans les résultats SARIF, vous pouvez réduire le nombre de chemins signalés pour chaque alerte.

  • Configuration avancée CodeQL pour code scanning : mettez à jour l’étape analyze pour limiter le nombre de chemins à un ou zéro maximum.

    - name: Perform CodeQL Analysis
      uses: github/codeql-action/analyze@v3
      env: 
        CODEQL_ACTION_EXTRA_OPTIONS: '{"database":{"interpret-results":["--max-paths", 1]}}'
    
  • CodeQL CLI database analyze : mettez à jour la commande d’analyse de base de données pour inclure l’indicateur --max-paths=1. Pour plus d’informations, consultez « database analyze ».

Remarque : le paramètre max-paths affecte les résultats de toutes les requêtes de flux de données.

Pour aller plus loin