Tech Hub

@ Solution Architecture Works

GitHub Advanced Security Part 2 of 2

Troubleshoot CodeQL results

Estimated reading: 5 minutes 19 views

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

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 disponibles.
  • 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 multi-langages. Chaque langage est analysé en parallèle dans 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 exécution.
  • 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 des problèmes courants et des solutions 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 classiques de base de données : 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 :

YAML

debug: true
Afficher plus de lignes

Les artefacts de débogage sont téléversés dans l’exécution du workflow sous le nom debug-artifacts.
Ils contiennent :

  • les logs CodeQL,
  • les bases de données CodeQL,
  • les fichiers SARIF générés par le workflow.

Dépanner l’extension CodeQL pour VS Code

Les fichiers journaux de l’extension VS Code contiennent des informations détaillées pour vous aider à résoudre les problèmes.

  • Les messages de progression et d’erreur apparaissent en bas à droite de l’espace de travail.
  • Vous pouvez utiliser la liste déroulante des journaux de l’extension CodeQL pour sélectionner les logs dont vous avez besoin.

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 serveur)

Si une exécution de workflow échoue à cause d’une erreur serveur, cela peut être 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” (Espace disque ou mémoire insuffisante)

CodeQL peut manquer d’espace disque ou de mémoire sur le runner pour les projets 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 (mémoire, disque).
    👉 Consultez la documentation CodeQL sur les spécifications matérielles recommandées.

Erreur : 403 “Resource not accessible by integration” 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 l’autorisation 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 recommandé d’utiliser l’événement pull_request plutôt que push.

Approche simple recommandée :

Exécutez l’analyse :

  • sur les push vers la branche par défaut et les branches importantes à long terme,
  • ainsi que sur les pull requests ouvertes vers ces branches.
ShellScript
on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

Erreur : “SARIF Upload Rejected Because of Default Setup”

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 vers un dépôt où la configuration par défaut est activée.

L’erreur peut également survenir 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 concerne uniquement les fichiers SARIF contenant des résultats générés avec CodeQL.

✅ Pour corriger cette erreur :

  • Désactivez CodeQL dans le dépôt concerné.
  • Puis réessayez de téléverser le fichier SARIF.

📚 Pour aller plus loin

Consultez la documentation CodeQL sur la résolution des problèmes liés à l’analyse de code.

Share this Doc

Troubleshoot CodeQL results

Or copy link

CONTENTS