Partager via


Résoudre les problèmes d’analyse du code

En règle générale, si vous rencontrez des erreurs avec l’exécution de CodeQL, l’interface de ligne de commande de CodeQL signale l’état de chaque commande qu’elle exécute en tant que code de sortie. Le code de sortie fournit des informations pour les commandes suivantes ou pour d’autres outils qui s’appuient sur l’interface de ligne de commande de CodeQL. Pour plus d’informations sur les détails du code de sortie, veuillez consulter la section Codes de sortie.

Erreur : commande CodeQL 'database finalize' (32)

Cette erreur indique un problème lors de la finalisation de la création de la base de données CodeQL, potentiellement lié à des erreurs d’extraction ou des étapes de génération manquantes.

Procédure de résolution :

  1. Vérifier que le code existe et qu’il est compilé
    • Pour les langages compilés, vérifiez que le processus de génération compile le code et se produit entre les tâches AdvancedSecurity-Codeql-Init et les tâches AdvancedSecurity-Codeql-Analyze. Les commandes de build courantes et les indicateurs requis (tels que clean no-cache/no-daemon) sont disponibles ici lors de la spécification des commandes de build.
    • Pour les langages interprétés, vérifiez qu’il existe du code source pour la langue spécifiée dans le projet.
  2. Vérifier les erreurs d’extraction
    • Vérifiez si les erreurs d’extraction affectent l’intégrité de la base de données CodeQL.
    • Passez en revue le fichier journal pour connaître les erreurs d’extraction et les avertissements afin d’évaluer l’intégrité globale de la base de données.
  3. Examiner les erreurs de surcharge
    • Si la plupart des fichiers rencontrent des erreurs d’extraction, examinez plus en détail la cause racine du problème d'extraction.

Erreur : script de génération automatique (1)

Cette erreur décrit un échec de build automatique, ce qui suggère un problème lié à l’installation ou à la configuration de l’analyse du code.

Procédure de résolution :

  • Configurer les étapes de build

Erreur : répertoires CodeQL introuvables dans le cache des outils de l’agent

Cette erreur indique un problème lié à l’installation de CodeQL pour les agents auto-hébergés.

Procédure de résolution :

Erreur : variable de pipeline de langage non définie

Cette erreur se produit lorsqu’une tentative d’exécution de CodeQL est faite sans définir la variable de pipeline spécifiant les langages à analyser.

Procédure de résolution :

  • Définir la variable de pipeline de langage
    • Vérifiez que la variable de pipeline de langage est correctement configurée. Reportez-vous aux instructions de configuration figurant dans Configurer GitHub Advanced Security pour Azure DevOps.
    • Les langues prises en charge sont csharp, cpp, go, java, javascript, python, ruby et swift.

CodeQL ne retourne aucun résultat

Cette section fournit des conseils pour les situations où l’analyse CodeQL ne produit aucun résultat.

Procédure de résolution :

  1. Vérifier les vulnérabilités détectées
    • Considérez la possibilité que votre code ne présente aucune vulnérabilité. Si des vulnérabilités sont attendues, mais qu’elles ne sont pas détectées, passez à la vérification.
  2. Vérifier la configuration de la suite de requêtes
    • Vérifiez la suite de requêtes utilisée et envisagez de passer à une suite plus complète si nécessaire.
    • Vous pouvez également créer des suites de requêtes personnalisées pour une analyse personnalisée.
  3. Ajuster les autorisations pour l’affichage des résultats
    • Assurez-vous que les autorisations appropriées, au moins au niveau contributeur, sont accordées pour accéder aux résultats d’analyse. Pour plus d’informations, consultez la section Autorisations Advanced Security.

Expiration de CodeQL

Si la tâche AdvancedSecurity-Codeql-Analyze@1 affiche This job was abandoned ... we lost contact with the agent et que vous utilisez un agent Microsoft hébergé, la tâche atteint la limite de six heures intégrée pour les agents hébergés payants. Vous pouvez essayer d’exécuter l’analyse sur un agent auto-hébergé à la place.

Autorisations de tâche d’analyse du code

La tâche de génération d’analyse du code utilise l’identité du pipeline pour appeler les API REST Sécurité avancée. Par défaut, les pipelines du même projet ont un accès pour charger le fichier SARIF généré en exécutant l’analyse CodeQL. Si ces autorisations sont retirées du compte de service de build ou si vous avez une configuration personnalisée (par exemple, un pipeline hébergé dans un projet différent du référentiel), vous devez accorder ces autorisations manuellement.

Procédure de résolution :

  • Accordez les autorisations Advanced Security: View alerts et Advanced Security: Manage and dismiss alerts au compte de service de build utilisé dans votre pipeline qui est [Project Name] Build Service ([Organization Name]) pour des pipelines délimités par le projet et Project Collection Build Service ([Organization Name]) pour des pipelines délimités par la collection.

Installation manuelle du bundle CodeQL sur un agent auto-hébergé

Installez le bundle CodeQL dans le cache d’outils de l’agent en utilisant le script d’installation de votre architecture, disponible sur GitHub. Ces scripts nécessitent que la variable d’environnement $AGENT_TOOLSDIRECTORY soit définie sur l’emplacement du répertoire des outils d’agent sur l’agent, par exemple C:/agent/_work/_tool. Vous pouvez également implémenter manuellement les étapes suivantes :

  1. Choisissez la dernière offre groupée de publication CodeQL à partir de GitHub.
  2. Téléchargez et décompressez le bundle dans le répertoire suivant dans le répertoire de l'outil de l'agent, généralement situé sous _work/_tool : ./CodeQL/0.0.0-[codeql-release-bundle-tag]/x64/. À l’aide de la version actuelle de v2.16.0, le nom du dossier est intitulé ./CodeQL/0.0.0-codeql-bundle-v2.16.0/x64/. En savoir plus sur le répertoire des outils d'agent.
  3. Créez un fichier vide intitulé x64.complete dans le dossier ./CodeQL/0.0.0-[codeql-release-bundle-tag]. D'après l’exemple précédent, le chemin d’accès à votre fichier x64.complete doit être ./CodeQL/0.0.0-codeql-bundle-v2.16.0/x64.complete.