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.
Copilot Autofix fournit une remédiation agentique pour les alertes d’analyse du code et les vulnérabilités de sécurité de l’analyse des dépendances dans GitHub Advanced Security pour Azure DevOps. Ouvrez une alerte prise en charge et sélectionnez Générer la résolution. L’agent de codage Copilot peut explorer le contexte de référentiel approprié, examiner et affiner ses modifications proposées et ouvrir une pull request avec un correctif suggéré.
Vous passez en revue, testez et fusionnez la modification par le biais de votre flux de travail de pull request normal. Les étapes sont les mêmes pour les deux types d’alertes. Choisissez la liste d’alertes appropriée pour commencer, puis utilisez le scanneur approprié pour vérifier le correctif fusionné.
Note
Cette fonctionnalité est en préversion publique limitée. Microsoft n'accepte pas actuellement d'utilisateurs supplémentaires pour la préversion.
Les fonctionnalités peuvent changer ou être supprimées sans préavis. Les fonctionnalités en préversion n’ont pas de contrat de niveau de service (SLA) et une prise en charge limitée.
GitHub Advanced Security for Azure DevOps fonctionne avec Azure Repos. Pour utiliser GitHub Advanced Security avec des référentiels GitHub, consultez GitHub Advanced Security.
Prerequisites
| Category | Requirements |
|---|---|
| Permissions | - 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 : autorisations d'administrateur de projet. - Pour gérer les autorisations dans Advanced Security : membre du groupe Administrateurs de la collection de projets ou la permission Advanced Security : gérer les paramètres doit être définie sur Autorisé. |
Pour plus d’informations sur les autorisations Advanced Security, consultez Gérer les autorisations Advanced Security.
- Analyse du code ou analyse des dépendances configurée et générant des alertes pour votre référentiel.
- Au moins une alerte prise en charge.
- Autorisation du dépôt Advanced Security : voir les alertes pour l’utilisateur qui sélectionne Générer un correctif.
- Accès au pool d’agents Azure Pipelines. Copilot Autofix met en attente une tâche de pipeline hébergée par Microsoft afin de générer et de publier le correctif. L’exécution nécessite qu’une tâche parallèle soit disponible. Si toutes les tâches parallèles sont utilisées, le correctif reste en attente jusqu’à ce que de la capacité soit disponible.
Copilot Autofix effectue des opérations sur le dépôt à l’aide d’une identité dédiée nommée GitHub Copilot ({organization}), et non d’un compte Build Service du projet ou de la collection. Le service accorde automatiquement à l’identité les autorisations suivantes :
| Operation | Autorisation |
|---|---|
| Accéder au projet | Afficher les informations au niveau du projet |
| Cloner le référentiel | Lire |
| Créer et pousser la branche de correctif | Contribuer et créer une branche |
| Créer et mettre à jour la pull request | Contribuer aux demandes d’extraction |
| Lire l’alerte | Sécurité avancée : afficher les alertes |
| Ajouter des discussions de pull request | Lire et contribuer aux discussions sur les pull requests |
| Mettre à jour l’exécution du pipeline | Mettre à jour les informations de build |
| Ajouter un libellé à la pull request | Créer l’étiquette Copilot Autofix |
Vous n’avez pas besoin d’accorder ces autorisations à un compte Build Service. Si votre organisation utilise des autorisations de refus explicites, vérifiez qu'elles ne bloquent pas l GitHub Copilot ({organization}) 'identité.
Comment fonctionne Autofix agentique
Agentic Autofix utilise les résultats de l’alerte et le contexte de votre référentiel, plutôt que de s’appuyer uniquement sur l’emplacement du code signalé. L’agent de codage Copilot peut utiliser des instructions personnalisées archivées et des compétences pertinentes pour comprendre vos normes de codage, votre architecture et vos modèles de correction. Il peut examiner et affiner la modification proposée avant d’ouvrir une pull request qui contient :
- Modification de code suggérée qui traite la vulnérabilité sous-jacente.
- Description de l’alerte en cours de correction, y compris l’ID d’alerte, la gravité et un résumé de la modification.
Étant donné que le correctif suggéré considère le contexte plus large de votre base de code, la modification peut s’étendre sur plusieurs lignes où l’alerte a été déclenchée et peut inclure des modifications apportées à d’autres fichiers si nécessaire.
Note
Les données traitées par Copilot Autofix ne sont pas utilisées pour entraîner de grands modèles de langage (LLM).
Important
Copilot suggestions de correction automatique sont générées par un modèle IA et ne sont pas garanties d'être correctes, complètes ou sécurisées. Examinez toujours attentivement la pull request, vérifiez qu’elle résout l’alerte sans introduire de nouveaux problèmes, et testez vos modifications avant de la fusionner.
Alertes prises en charge
| Type d’alerte | Prise en charge en préversion publique limitée |
|---|---|
| Analyse du code | Alertes provenant des outils d’analyse de code CodeQL et tiers. |
| Analyse des dépendances | Alertes de faille de sécurité. Les détections de logiciels malveillants ne sont pas incluses. |
| Analyse de secrets | Non pris en charge. |
Pour l’un ou l’autre type d’alerte pris en charge, Copilot Autofix propose une modification à examiner. Elle ne garantit pas un correctif pour chaque résultat. Pour plus d’informations, consultez Le correctif n’est pas disponible.
Fournir des instructions et des compétences liées au référentiel
Donnez à Autofix agentique le contexte que vous souhaitez qu’il prenne en compte lors de la génération d’un correctif. Archivez les instructions et les compétences personnalisées dans le référentiel aux emplacements .github ou .agents pris en charge. Ces fichiers peuvent aider l’agent de codage Copilot à suivre les normes de codage de votre équipe et les workflows de correction établis.
Ajouter des normes de codage aux instructions personnalisées
Utilisez des instructions personnalisées à l’échelle du dépôt, telles que .github/copilot-instructions.md, pour décrire la façon dont les modifications doivent correspondre à votre projet. Incluez des conseils sur les conventions de nommage, les bibliothèques approuvées, les limites architecturales et la création et le test des modifications.
Par exemple, si votre équipe nécessite un outil d'assistance partagé de validation des entrées, décrivez cette exigence dans les instructions. Ne partez pas du principe que l’agent le déduira de l’alerte.
# Coding standards
- Use the existing input-validation helpers instead of adding new validation logic.
- Follow the naming conventions in the surrounding code.
- Keep dependency changes scoped to the vulnerability being fixed.
- Update the relevant tests when a fix changes behavior.
- Run the documented build and test commands before proposing a change.
Utilisez les noms et emplacements de fichiers pris en charge par Copilot. Un fichier nommé custom-instructions.md n'établit pas, par son nom seul, un fichier d'instructions Copilot à l'échelle du référentiel. Pour le format de fichier à l’échelle du référentiel, consultez Ajout d’instructions personnalisées de référentiel pour GitHub Copilot.
Ajouter des compétences pour les tâches de correction reproductibles
Les compétences du référentiel peuvent fournir des instructions, des scripts et des ressources de prise en charge spécifiques aux tâches. Stockez une compétence dans un répertoire tel que .github/skills/<skill-name>/ ou .agents/skills/<skill-name>/, avec ses instructions dans SKILL.md.
Par exemple, une compétence de mise à jour des dépendances peut décrire votre procédure de mise à jour de package et les vérifications de compatibilité. Une compétence de correction de code peut décrire comment utiliser vos bibliothèques de sécurité approuvées. Agentic Autofix peut référencer les compétences pertinentes dans le cadre de la génération d’un correctif ; toutes les compétences ne s’appliquent pas à chaque alerte. Pour connaître le format de compétence, consultez À propos des compétences de l’agent.
Important
Les instructions et compétences du référentiel fournissent un contexte supplémentaire, et non une garantie qu’un correctif généré répond à chaque exigence. Passez en revue la modification proposée par rapport à vos normes, exécutez vos vérifications de validation et vérifiez que la vulnérabilité est résolue avant la fusion.
Billing
La correction automatique Copilot est incluse dans votre licence GitHub Advanced Security pour Azure DevOps. La génération d'un correctif consomme des crédits IA à partir du compteur de facturation Azure de votre organisation.
Chaque génération de correctif consomme des jetons, qui incluent des jetons d’entrée pour le contexte de code envoyé au modèle, des jetons de sortie pour la modification suggérée et des jetons mis en cache qui réutilisent le contexte existant.
Pour simplifier la facturation, ces jetons sont convertis en unité standard appelée crédit IA GitHub, où 1 crédit est égal à 0,01 USD. Les frais sont facturés à l’abonnement Azure lié à votre organisation Azure DevOps et apparaissent sous la forme d’un compteur distinct dans Gestion des coûts Azure.
Le coût de chaque correctif varie selon la taille du contexte de code environnant et la complexité de la modification.
Note
Les paramètres de budget de GitHub Copilot et les limites utilisateur configurées sur GitHub ne s'appliquent pas aux dépenses du compteur Copilot Autofix dans Azure DevOps. Cette utilisation est facturée via l’abonnement Azure lié à votre organisation Azure DevOps, et non via la facturation GitHub Copilot.
Afficher les coûts de correction automatique par projet
Copilot Autofix prend en charge les étiquettes d’organisation et de projet afin de pouvoir filtrer ses frais d’utilisation et comparer les coûts entre les projets Azure DevOps.
- Dans le portail Azure, ouvrez l’abonnement lié à votre organisation Azure DevOps. Accédez à Cost Management>Analyse des coûts.
- Sélectionnez la plage de dates que vous souhaitez examiner.
- Ajoutez un filtre Meter et sélectionnez AI Credit for AzDO GAC. Ce filtre isole les frais d’utilisation d’Autofix des autres coûts d’abonnement.
- Ajoutez un filtre d’étiquettes pour
_organizationname_et sélectionnez les organisations Azure DevOps dont vous souhaitez afficher les coûts. - Définissez Group by sur la
_projectname_balise pour afficher la répartition des coûts de correction automatique par projet.
Pour passer en revue les dates individuelles, définissez Granularité sur Quotidien et basculez la visualisation sur Tableau. Conservez les filtres de compteur et d’organisation et le regroupement de projets. Vous pouvez également filtrer la balise _projectname_ pour limiter la table à des projets spécifiques.
Activer la correction automatique de Copilot
Vous pouvez activer Copilot Autofix au niveau de l’organisation, du projet ou du dépôt. Lorsque vous activez la correction automatique dans une étendue plus large, le paramètre s’applique à tous les référentiels de cette étendue. Choisissez où configurer la correction automatique en fonction des référentiels auxquels vous souhaitez appliquer le paramètre :
| Scope | Où configurer la correction automatique |
|---|---|
| Organisation | Sélectionnez Paramètres de l’organisation> pour activer Autofix pour tous les référentiels de l’organisation. |
| Projet | Sélectionnez Project paramètres>Référentiels>tous les référentiels pour activer la correction automatique pour tous les référentiels dans le project. |
| Référentiel | Sélectionnez Paramètres du projet>Dépôts, puis sélectionnez un dépôt pour activer la correction automatique uniquement pour ce dépôt. |
Pour activer Autofix dans Copilot :
- Connectez-vous à votre organisation Azure DevOps (
https://dev.azure.com/{yourorganization}). - Accédez à la page des paramètres de l’organisation, du projet ou de l’étendue du référentiel que vous souhaitez configurer.
- Dans la section Sécurité avancée, recherchez la correction automatique pour les alertes de sécurité. Si vous utilisez Code Security autonome, sélectionnez Options pour ouvrir le panneau fonctionnalités de Code Security.
- Sélectionnez Correction automatique pour les alertes de sécurité. Le même paramètre active Copilot Autofix pour les alertes d’analyse de code et d’analyse des dépendances prises en charge.
- Si vous utilisez le panneau Fonctionnalités de sécurité du code , sélectionnez Appliquer pour enregistrer vos modifications.
Pour obtenir des captures d’écran des paramètres Advanced Security intégrés et Code Security autonomes, consultez Configurer Copilot Autofix.
L’activation de la correction automatique ne configure pas l’analyse ni ne génère automatiquement des correctifs. Tout d’abord, configurez l’analyse du code ou l’analyse des dépendances. Ensuite, demandez une correction depuis une alerte compatible.
Générer un correctif pour une alerte
Après avoir activé Copilot Autofix, suivez les mêmes étapes pour une alerte d’analyse de code ou une alerte de vulnérabilité de dépendance prise en charge.
- Sélectionnez Repos>Advanced Security.
- Ouvrez la liste des alertes d’analyse du code ou d’analyse des dépendances, puis sélectionnez une alerte pour ouvrir son affichage détaillé.
- Passez en revue le résultat, le code ou la dépendance affectés et les conseils de correction.
- Sélectionnez Générer un correctif.
Les exemples d’analyse de code suivants illustrent le flux de travail partagé. Un exemple d’analyse des dépendances montre une pull request générée plus loin dans cette section.
Pendant que Copilot Autofix travaille sur le correctif, la vue détaillée de l’alerte indique que le correctif est en cours de traitement. Copilot Autofix ouvre une pull request lorsque le correctif est prêt.
Copilot Autofix génère le correctif et ouvre une pull request depuis une branche nommée copilot-autofix/.... La pull request porte la balise Copilot Autofix, que vous pouvez utiliser pour identifier les pull requests Autofix dans la liste des pull requests.
Un seul correctif peut être actif pour la même alerte et la même branche. Pendant qu’une demande est en attente ou que son pipeline est en cours d’exécution, générer un correctif n’est pas disponible. Si une autre demande est envoyée en même temps, l’alerte indique qu’un correctif est déjà généré. Vous pouvez générer un autre correctif après la réussite ou l’échec de la requête active.
Pour les alertes CodeQL, la demande de tirage s’affiche automatiquement sous Demandes de tirage associées dans l’affichage des détails de l’alerte et continue de se mettre à jour en tant que progression de génération et d’achèvement. Vous n’avez donc pas besoin d’actualiser la page.
L’exemple d’analyse des dépendances suivant montre une pull request Autofix active pour un paquet vulnérable sous pull requests associées.
Si Copilot Autofix ne produit aucune modification de code pour l’alerte, Copilot Autofix ne crée ni branche ni pull request, et n’affiche pas de lien vers une pull request dans la vue détaillée de l’alerte. Dans ce cas, corrigez l’alerte manuellement. Pour plus d’informations, consultez Le correctif n’est pas disponible.
Examiner et fusionner le correctif
La demande de tirage ouverte par Copilot Autofix se comporte comme toute autre demande de tirage Azure Repos. Sa description résume l’alerte corrigée par le correctif.
L’étiquette Copilot Autofix identifie les pull requests de correction automatique.
- Ouvrez la demande de tirage depuis la section Demandes de tirage associées de l’alerte, ou via Repos>Demandes de tirage.
- Passez en revue la modification proposée sous l’onglet Fichiers dans tous les fichiers affectés.
- Modifiez la modification si vous devez correspondre à votre style de code, conventions d’affectation de noms ou exigences de projet.
- Approuvez et finalisez la pull request selon votre processus habituel de révision.
Après avoir fusionné la pull request, exécutez le scanneur approprié sur la branche cible fusionnée. Copilot Autofix n’effectue pas cette analyse après fusion.
| Alerte que vous avez corrigée | Qu’exécuter après la fusion |
|---|---|
| Analyse du code | Exécutez CodeQL ou le scanneur tiers qui a signalé l’alerte et publiez les résultats d’analyse mis à jour dans Advanced Security. |
| Vulnérabilité liée à une dépendance | Exécutez l’analyse des dépendances afin que Advanced Security puisse traiter les dépendances mises à jour. |
Le simple fait de fusionner une pull request ne ferme pas l’alerte. Advanced Security met à jour l’état d’alerte après avoir traité les nouveaux résultats de l’analyse. Vérifiez que ces résultats ne signalent plus la vulnérabilité.
Tip
Un correctif généré est un point de départ, pas une réponse finale. Traitez la pull request comme toute autre modification : examinez-la, testez-la et demandez des relecteurs supplémentaires si nécessaire avant de la fusionner.
Résoudre les problèmes liés à Copilot Autofix
Correction en cours
La plupart des exécutions Copilot Autofix se terminent en environ 2 à 5 minutes. Le temps d’exécution peut varier en fonction de la capacité de pipeline disponible et de la complexité de la modification. Si tous les travaux parallèles sont utilisés, le pipeline reste en attente et l’alerte continue d’afficher Correction en cours jusqu’à ce que des ressources soient disponibles.
Une requête qui reste en attente avant qu’un pipeline ne soit mis en file d’attente échoue après 30 minutes. Un pipeline en attente ou en cours d’exécution expire au bout de deux heures. L’alerte peut cesser de mettre à jour automatiquement avant que le délai d’expiration du serveur principal soit atteint. Si l’alerte reste en cours :
- Actualisez la page de détails de l’alerte.
- Si Afficher l’exécution est disponible, ouvrez l’exécution de pipeline et vérifiez si elle est en file d’attente ou en cours d’exécution.
- Attendez que la requête atteigne l’état de réussite ou d’échec. N’envoyez pas une autre demande pendant que la demande existante est active.
- Si la demande échoue, passez en revue le message d’échec et sélectionnez Réessayer le correctif après avoir résolu la cause.
Pull request créée mais non liée à l’alerte
La pull request peut être créée avec succès avant d’apparaître dans Pull requests associées. Actualisez la page de détails de l’alerte. Si la pull request n'est toujours pas liée, sélectionnez Repos>Pull requests et recherchez :
- L’étiquette Copilot Autofix.
- Branche source qui commence par
copilot-autofix/. - Titre ou description d’une pull request qui fait référence à l’alerte.
Examinez et fusionnez la pull request en suivant le workflow habituel des pull requests, même si le lien n’apparaît pas dans l’alerte.
Les opérations sur le référentiel ou la pull request échouent
Copilot Autofix réalise un clone superficiel de la branche associée à l’alerte. Elle n’initialise pas les sous-modules Git. Il crée une branche portant un nom unique copilot-autofix/..., publie la modification générée et ouvre une pull request ciblant la branche d’alerte.
Utilisez Afficher l’exécution depuis l’état d’échec de l’alerte pour examiner les journaux du pipeline. Le tableau suivant répertorie les causes et actions courantes :
| Failure | Que vérifier |
|---|---|
| Le référentiel ou la branche ne peut pas être cloné | Vérifiez que le référentiel et la branche d’alerte existent toujours. Pour une alerte détectée dans une pull request, la branche source et la pull request doivent toujours être actives. Si la branche a été supprimée, exécutez le scanneur approprié sur la branche actuelle et générez un correctif à partir de l’alerte résultante. |
| Le correctif dépend du code dans un sous-module Git | Copilot Autofix n'initialise pas les sous-modules. Corrigez l’alerte manuellement si le contexte de code requis est stocké dans un sous-module. |
| La branche par défaut a été modifiée ou la branche d’alerte a été supprimée | La correction automatique de Copilot s’applique à la branche associée à l’alerte, qui n’est pas nécessairement la branche par défaut actuelle. Exécutez le scanneur approprié sur la branche prévue et générez un correctif à partir de l’alerte de cette branche. |
| Impossible de créer une branche de correctif | Vérifiez les restrictions sur les noms de branches du référentiel et les autorisations de refus explicite pour l’identité GitHub Copilot ({organization}). Autoriser les branches avec le copilot-autofix/ préfixe. Une nouvelle tentative crée une branche nommée de manière unique. |
| Une stratégie de branche bloque la modification | Les stratégies d’achèvement des pull requests s’appliquent à la pull request Autofix comme à toute autre pull request. Satisfaites aux exigences relatives aux réviseurs et aux politiques de validation avant de la terminer. Si une stratégie du dépôt bloque le push initial, mettez à jour la stratégie pour autoriser l’identité Autofix et le préfixe de branche. |
| Le commit généré ne peut pas être poussé | Vérifiez les autorisations Contribuer et Créer une branche pour l’identité GitHub Copilot ({organization}) , y compris les refus explicites. Vérifiez également la validation de l’adresse e-mail de l’auteur du commit comme décrit dans Un correctif a été généré, mais n’a pas pu être validé ou envoyé. |
| Impossible de créer la pull request | Vérifiez l’autorisation Contribuer aux demandes de tirage (pull requests) ainsi que l’autorisation de créer l’étiquette Copilot Autofix pour l’identité GitHub Copilot ({organization}). |
Un correctif a été généré, mais n’a pas pu être commit ou poussé
Copilot Autofix utilise noreply@dev.azure.com comme adresse e-mail de l’auteur du commit. Si une stratégie de validation de l’adresse e-mail de l’auteur du commit n’autorise pas cette adresse, Copilot Autofix peut générer la modification du code, mais ne peut pas l’inclure dans un commit ni la pousser pour créer la pull request.
La vue détaillée de l’alerte affiche une erreur qui identifie l’adresse e-mail de l’auteur du commit bloqué.
Ajoutez noreply@dev.azure.com aux modèles d’adresses e-mail autorisés dans la stratégie de validation de l’adresse e-mail de l’auteur du commit :
- Sélectionnez Paramètres de projet>Référentiels.
- Sélectionnez Tous les référentiels pour mettre à jour la stratégie au niveau du projet, ou sélectionnez le référentiel qui a la stratégie.
- Sélectionnez Stratégies.
- Sous Stratégies du dépôt, recherchez Validation de l’adresse e-mail de l’auteur du commit.
- Ajouter
noreply@dev.azure.comaux modèles d’e-mail autorisés. - Revenez à l’alerte et sélectionnez Réessayer la correction.
Une exécution échoue
Si une exécution de Copilot Autofix ne peut pas aboutir, l’alerte affiche un état d’échec bien visible afin que vous puissiez constater rapidement que l’exécution n’a pas abouti. À partir de l’état d’échec, vous pouvez réessayer l’exécution pour générer un nouveau correctif.
Une exécution peut échouer pour des raisons temporaires ou lorsque l’exécution ne produit pas de modification de code utilisable. Réessayez l’exécution pour générer à nouveau le correctif.
Une alerte reste ouverte après avoir fusionné le correctif
La fusion d’une pull request Autofix ne ferme pas l’alerte à elle seule. Advanced Security a besoin de nouveaux résultats du scanner qui a signalé la détection. Si l’alerte reste ouverte :
- Vérifiez que la pull request a été fusionnée dans la même branche que celle sur laquelle l’alerte a été détectée.
- Vérifiez que l’analyse du code ou l’analyse des dépendances, le cas échéant, s’est exécutée après la fusion et a analysé le commit fusionné.
- Vérifiez que Advanced Security a traité les résultats mis à jour pour le référentiel et la branche appropriés.
- Passez en revue les nouveaux résultats pour vérifier que la vulnérabilité n’est plus détectée.
- Si la vulnérabilité est toujours présente, mettez à jour le correctif et réexécutez le scanneur approprié.
Le correctif n’est pas disponible
Copilot Autofix ne peut pas générer de correctif pour chaque alerte. Un correctif peut ne pas être disponible lorsque :
- Le type d’alerte n’est actuellement pas pris en charge par Copilot Autofix.
- Copilot détermine que l’alerte peut être un faux positif.
- Copilot Autofix s'exécute, mais n'apporte aucune modification au code. Dans ce cas, aucune branche ou demande de tirage n’est créée.
Si Copilot Autofix détermine que l’alerte pourrait être un faux positif et n’apporte aucune modification, la vue détaillée de l’alerte affiche le résultat. Vous pouvez passer en revue l’exécution ou réessayer le correctif.
Lorsqu’un correctif n’est pas disponible, utilisez les conseils de correction de l’alerte pour corriger le problème manuellement. Ignorez une alerte uniquement après avoir examiné le résultat et déterminé le motif de rejet approprié. Pour plus d’informations, consultez les détails de l’alerte d’analyse du code et les détails de l’alerte d’analyse des dépendances.