Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
En règle générale, si vous rencontrez des erreurs avec l’exécution de CodeQL, l’interface CLI 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.
Conditions préalables
| Catégorie | Spécifications |
|---|---|
| Autorisations | - Pour afficher un résumé de toutes les alertes d’un référentiel : Contributeur autorisations pour le référentiel. - Pour ignorer les alertes dans Advanced Security : administrateur de projet autorisations. - Pour gérer les autorisations dans Advanced Security : vous devez être membre du groupe Administrateurs de collection de projets ou disposer de l’autorisation Advanced Security : gérer les paramètres définie sur Autoriser. |
Pour plus d’informations sur les autorisations Advanced Security, consultez Gérer les autorisations Advanced Security.
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 :
- 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-Initet les tâchesAdvancedSecurity-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.
- Pour les langages compilés, vérifiez que le processus de génération compile le code et se produit entre les tâches
- 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.
- 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
- Supprimez l’étape AutoBuild et configurez plutôt des étapes de génération spécifiques pour les langages compilés dans vos pipelines.
- Reportez-vous aux instructions de configuration figurant dans Configurer GitHub Advanced Security pour Azure DevOps.
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 :
- Reportez-vous aux instructions d’installation ou aux scripts de configuration figurant dans Configurer GitHub Advanced Security pour Azure DevOps.
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,rubyetswift.
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 :
- Vérifier les vulnérabilités détectées
- Considérez la possibilité que votre code n’ait pas de vulnérabilités. Si des vulnérabilités sont attendues, mais qu’elles ne sont pas détectées, passez à la vérification.
- Vérifier la configuration de la suite de requêtes
- Vérifiez que la suite de requêtes est 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.
- 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 AdvancedSecurity-Codeql-Analyze@1 tâche s’affiche This job was abandoned ... we lost contact with the agent et que vous utilisez un agent Microsoft hébergé, la tâche atteint le délai d’attente intégré de six heures pour les agents hébergés payants. Vous pourriez envisager d’exécuter l’analyse sur un agent auto-hébergé au lieu de cela.
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 supprimé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, accordez ces autorisations manuellement.
Procédure de résolution :
- Accordez les autorisations
Advanced Security: View alertsetAdvanced Security: Manage and dismiss alertsau 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 etProject Collection Build Service ([Organization Name])pour des pipelines délimités par la collection.
Publication des résultats de l'analyse de code dans un dépôt non prévu
Si vous avez une définition de pipeline hébergée dans un référentiel et que le code source à analyser par GitHub Advanced Security se trouvait dans un autre, les résultats peuvent être traités et envoyés au référentiel incorrect, en publiant dans le référentiel contenant la définition du pipeline plutôt que dans le référentiel de code source.
Pour activer le routage des résultats prévu, définissez la variable advancedsecurity.publish.repository.infer: true d’environnement de pipeline pour déduire le dépôt à publier à partir du référentiel dans le répertoire de travail.
trigger:
- main
resources:
repositories:
# PipelineRepo: The repository containing the pipeline definition.
# This is optional and only needed if you plan to reference files or scripts from this repo.
- repository: PipelineRepo
type: git
name: DevOpsPipelineRepo
ref: refs/heads/main
trigger:
- main
# SourceRepo: The repository where scanning and publishing will occur.
- repository: SourceRepo
type: git
name: code-to-analyze-repo
ref: refs/heads/main
trigger:
- main
jobs:
- job: "CodeQLScan"
displayName: "CodeQL Scanning with Inferred Publishing"
variables:
# Enable repository inference
advancedsecurity.publish.repository.infer: true
steps:
# Checkout the SourceRepo
- checkout: SourceRepo
# Initialize CodeQL
- task: AdvancedSecurity-Codeql-Init@1
displayName: "Initialize CodeQL"
inputs:
languages: "python,javascript" # Adjust based on repository languages
# Perform CodeQL analysis
- task: AdvancedSecurity-Codeql-Analyze@1
displayName: "Analyze Code with CodeQL"
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 $AGENT_TOOLSDIRECTORY variable d’environnement 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 :
- Choisissez la dernière offre groupée de publication CodeQL à partir de GitHub.
- 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 dev2.23.5, le nom du dossier est intitulé./CodeQL/0.0.0-v2.23.5/x64/. En savoir plus sur le répertoire des outils d'agent. - Créez un fichier vide intitulé
x64.completedans le dossier./CodeQL/0.0.0-[codeql-release-bundle-tag]. D'après l’exemple précédent, le chemin d’accès à votre fichierx64.completedoit être./CodeQL/0.0.0-v2.23.5/x64.complete.
Comment puis-je définir explicitement le référentiel pour publier des alertes d’analyse de code ?
- Utilisez la variable d'environnement de pipeline
advancedsecurity.publish.repository.infer: truepour déterminer le référentiel à publier en utilisant celui présent dans le répertoire de travail. - En guise d’autre option, si vous n’examinez pas explicitement un référentiel ou utilisez un alias pour extraire votre référentiel, utilisez la variable
advancedsecurity.publish.repository: $[ convertToJson(resources.repositories['YourRepositoryAlias']) ]
Pour plus d’informations, consultez les notes de publication.