Tech Hub

@ Solution Architecture Works

Sécurité Avancée sur GitHub – Partie 2 sur 2

Résolution des problèmes liés aux résultats CodeQL

Temps estimé :5 minutes 72 vues

Cette unité fournit des conseils pour optimiser et résoudre les problèmes lorsque vous travaillez avec CodeQL et l’analyse de code.

Optimiser les temps d’analyse CodeQL

Plusieurs raisons peuvent expliquer pourquoi votre analyse CodeQL prend trop de temps :

  • Si vous utilisez des runners auto-hébergés, vous pouvez augmenter la mémoire ou le nombre de cœurs.
  • Des problèmes peuvent survenir si le dépôt contient plusieurs langages. Vous pouvez modifier votre workflow pour utiliser une matrice qui accélère l’analyse multilingue. L’analyse de chaque langage s’exécute en parallèle avec le workflow CodeQL par défaut. Les workflows avancés doivent être configurés de manière similaire s’ils exécutent l’initialisation et l’analyse des langages de façon séquentielle.
  • La quantité de code analysée peut allonger les temps d’exécution. Le temps d’analyse est généralement proportionnel à la taille du code. Vous pouvez réduire cette taille en excluant le code de test ou en divisant le code en plusieurs workflows pour analyser un sous-ensemble à chaque scan.
  • Si l’analyse est trop lente lors des événements push ou pull_request, vous pouvez la déclencher uniquement lors de l’événement schedule.

Optimiser les requêtes CodeQL

Certains problèmes de performance peuvent venir de requêtes personnalisées. Vous trouverez les problèmes courants et comment les résoudre dans la documentation CodeQL sur le dépannage des performances de requêtes.

Points importants à retenir :

  • Les prédicats et classes CodeQL sont évalués en tant que tables de base de données. Les grands prédicats génèrent de grandes tables, coûteuses à calculer.
  • Le langage QL est basé sur des opérations de base de données standards et l’algèbre relationnelle : jointure, projection, union, etc.
  • Les requêtes sont évaluées de bas en haut : un prédicat n’est évalué que lorsque tous les prédicats dont il dépend ont été évalués.

Artefacts de débogage

Vous pouvez obtenir des artefacts pour vous aider à déboguer les problèmes liés à l’analyse CodeQL.
Modifiez l’étape init de votre fichier de workflow CodeQL et définissez : debug: true

Messages d’erreur courants

Pour résoudre les problèmes liés à votre workflow CodeQL, il est utile de connaître les messages d’erreur les plus fréquents.

Erreur : « Server error » ( « Erreur de serveur » )

Si une exécution de workflow échoue à cause d’une erreur serveur, il peut s’agir d’un problème de communication temporaire.
Essayez de relancer le workflow. Si le problème persiste, contactez le support GitHub.

Erreur : « Out of disk » ou « Out of memory » (« Hors disque » ou « Mémoire insuffisante »)

CodeQL peut manquer d’espace disque ou de mémoire sur le runner si le projet est trop volumineux.

  • Si vous utilisez un runner GitHub Actions hébergé, contactez le support GitHub.
  • Si vous utilisez un runner auto-hébergé, vous devrez peut-être augmenter les ressources matérielles du serveur.
    Consultez la documentation CodeQL sur les spécifications matérielles recommandées.

Erreur : 403 «  Ressource non accessible par intégration »  lors de l’utilisation de Dependabot

Dependabot est considéré comme non fiable lorsqu’il déclenche un workflow. Le workflow s’exécute avec des autorisations en lecture seule.
Le téléversement des résultats d’analyse de code pour une branche nécessite généralement la permission security_events: write.

Cependant, l’analyse de code autorise toujours le téléversement des résultats lorsque l’événement pull_request déclenche l’action.
Pour les branches Dependabot, il est donc recommandé d’utiliser l’événement pull_request au lieu de push.

💡 Astuce

Une approche simple consiste à exécuter l’analyse lors des push vers la branche par défaut et les branches importantes à long terme, ainsi que lors des pull requests ouvertes vers ces branches.

Voici un exemple de configuration :

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

Erreur : «  Chargement SARIF rejeté en raison de l’installation par défaut »

Le téléversement de fichiers SARIF est bloqué lorsque la configuration par défaut de CodeQL est activée.

Cette erreur se produit lorsqu’un processus tente de téléverser un fichier SARIF contenant des résultats d’analyse CodeQL dans un dépôt où la configuration par défaut est activée.
Elle peut également se produire si le téléversement est effectué via l’API REST ou le CLI CodeQL.

Ce blocage est mis en place pour éviter toute confusion lorsque plusieurs systèmes génèrent des alertes similaires d’analyse de code.

Cette erreur ne concerne que les fichiers SARIF contenant des résultats générés avec CodeQL.

Comment corriger cette erreur :

Désactivez CodeQL dans le dépôt, puis réessayez de téléverser le fichier SARIF.

Pour aller plus loin :

Consultez la documentation CodeQL sur le dépannage de l’analyse de code pour plus d’informations.

Share this Doc

Résolution des problèmes liés aux résultats CodeQL

Or copy link

CONTENTS