Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Copilot Autofix tillhandahåller agentbaserad åtgärd för aviseringar om kodgenomsökning och säkerhetsrisker för beroendegenomsökning i GitHub Advanced Security för Azure DevOps. Öppna en avisering som stöds och välj Generate fix. Copilots kodningsagent kan utforska relevant lagringsplatsens kontext, granska och förfina de föreslagna ändringarna och öppna en pull request med en föreslagen korrigering.
Du granskar, testar och sammanfogar ändringen via ditt normala arbetsflöde för pull requests. Stegen är desamma för båda aviseringstyperna. Välj den relevanta aviseringslistan för att starta och använd sedan relevant skanner för att verifiera den sammanfogade korrigeringen.
Note
Den här funktionen är i begränsad offentlig förhandsversion. Microsoft accepterar för närvarande inte ytterligare användare för förhandsversionen.
Funktionen kan ändras eller tas bort utan föregående meddelande. Förhandsversionsfunktioner har inget serviceavtal (SLA) och begränsad support.
GitHub Advanced Security för Azure DevOps fungerar med Azure-lagringsplatser. Information om hur du använder GitHub Advanced Security med GitHub-lagringsplatser finns i GitHub Advanced Security.
Prerequisites
| Category | Requirements |
|---|---|
| Permissions | - Så här visar du en sammanfattning av alla aviseringar för en lagringsplats: Deltagare behörigheter för lagringsplatsen. – Så här stänger du aviseringar i Avancerad säkerhet: Projektadministratör behörigheter. – Hantera behörigheter i Avancerad säkerhet: Medlem i gruppen Project collection administrators eller behörigheten Avancerad säkerhet: hantera inställningar inställd på Tillåt. |
Mer information om avancerade säkerhetsbehörigheter finns i Hantera avancerade säkerhetsbehörigheter.
- Kodgenomsökning eller beroendegenomsökning har konfigurerats och skapat aviseringar för ditt repo.
- Minst en avisering som stöds.
- Behörigheten Advanced Security: visa aviseringar i databasen för den användare som väljer Generera korrigering.
- Åtkomst till Azure-pipelines-agentpoolen. Copilot Autofix lägger ett Microsoft-värdat pipeline-jobb i kö för att generera och publicera korrigeringen. Körningen kräver ett tillgängligt parallellt jobb. Om alla parallella jobb är upptagna förblir åtgärden i kö tills kapacitet finns tillgänglig.
Copilot Autofix utför lagringsplatsåtgärder med hjälp av en dedikerad identitet med namnet GitHub Copilot ({organization}), inte ett projekt- eller samlingsversionstjänstkonto. Tjänsten ger automatiskt identiteten följande behörigheter:
| Operation | Behörighet |
|---|---|
| Få åtkomst till projektet | Visa information på projektnivå |
| Klona lagringsplatsen | Läs |
| Skapa och skicka upp fixgrenen | Delta och skapa gren |
| Skapa och uppdatera pull-begäran | Bidra till att hämta förfrågningar |
| Läs aviseringen | Avancerad säkerhet: visa aviseringar |
| Lägga till diskussioner för pull-begäranden | Läs och bidra till diskussioner kring pull requests |
| Uppdatera pipelinekörningen | Uppdatera versionsinformation |
| Märk pull-begäran | Skapa etiketten Copilot Autofix |
Du behöver inte bevilja dessa behörigheter till ett Build Service-konto. Om din organisation använder uttryckliga neka-behörigheter, kontrollera att de inte blockerar identiteten GitHub Copilot ({organization}).
Så här fungerar Autofix med agentfunktioner
Agentic Autofix använder aviseringens resultat och din repositorykontext, i stället för att bara förlita sig på den rapporterade kodplatsen. Copilot-kodningsagenten kan använda anpassade instruktioner som checkats in i källkodsförvaret och relevanta färdigheter för att förstå dina kodningsstandarder, arkitektur och åtgärdsmönster. Den kan granska och förfina den föreslagna ändringen innan en pull-begäran som innehåller följande öppnas:
- En föreslagen kodändring som åtgärdar den underliggande säkerhetsrisken.
- En beskrivning av aviseringen som åtgärdas, inklusive aviserings-ID, allvarlighetsgrad och en sammanfattning av ändringen.
Eftersom den föreslagna korrigeringen tar hänsyn till den bredare kontexten för din kodbas kan ändringen sträcka sig över mer än den enda rad där aviseringen utlöstes och kan innehålla ändringar i andra filer där det behövs.
Note
Data som hanteras av Copilot Autofix används inte för att träna stora språkmodeller (LLM).
Important
Copilot autofixförslag genereras av en AI-modell och garanteras inte vara korrekta, fullständiga eller säkra. Granska alltid pull-begäran noggrant, kontrollera att den löser aviseringen utan att introducera nya problem och testa ändringarna innan du sammanfogar dem.
Aviseringar som stöds
| Aviseringstyp | Stöd i offentlig förhandsversion med begränsad tillgång |
|---|---|
| Kodgenomsökning | Aviseringar från CodeQL och kodgenomsökningsverktyg från tredje part. |
| Beroendegenomsökning | Aviseringar om säkerhetssårbarheter. Fynd av skadlig kod ingår inte. |
| Hemlig genomsökning | Stöds inte. |
För någon av de två stödda aviseringstyperna föreslår Copilot Autofix en ändring som du kan granska. Det garanterar inte en korrigering för varje resultat. Mer information finns i Det går inte att åtgärda.
Ange instruktioner och färdigheter för repot
Ge agentic Autofix den kontext som du vill att den ska ta hänsyn till när den genererar en korrigering. Checka in anpassade instruktioner och färdigheter i databasen på platser som stöds .github eller .agents Dessa filer kan hjälpa Copilot kodningsagenten att följa teamets kodningsstandarder och etablerade arbetsflöden för åtgärder.
Lägg till kodningsstandarder i anpassade instruktioner
Använd anpassade instruktioner för hela lagringsplatsen, till exempel .github/copilot-instructions.md, för att beskriva hur ändringar ska passa ditt projekt. Inkludera vägledning om namngivningskonventioner, godkända bibliotek, arkitekturgränser och hur du skapar och testar ändringar.
Om ditt team till exempel behöver en delad hjälpfunktion för indatavalidering beskriver du det kravet i anvisningarna. Anta inte att agenten kommer att härleda den från varningen.
# 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.
Använd Copilots filnamn och lagringsplatser som stöds. En fil med namnet custom-instructions.md etablerar inte, enbart med sitt namn, en Copilot-instruktionsfil för hela repositoriet. Information om filformatet för hela repot finns i Så här lägger du till anpassade instruktioner för GitHub Copilot i ett repo.
Lägg till färdigheter för repeterbara åtgärdsuppgifter
Kunskaper för repositorier kan ge uppgiftsspecifika instruktioner, skript och stödresurser. Lagra en färdighet i en katalog som .github/skills/<skill-name>/ eller .agents/skills/<skill-name>/, med dess instruktioner i SKILL.md.
En kompetens för beroendeuppdatering kan till exempel beskriva din paketuppdateringsprocedur och kompatibilitetskontroller. En färdighet för kodåtgärd beskriver hur du använder dina godkända säkerhetsbibliotek. Agentic Autofix kan referera till relevanta färdigheter som en del av genereringen av en korrigering. Alla färdigheter gäller inte för varje avisering. Information om formatet för agentfärdigheter finns i Om agentfärdigheter.
Important
Instruktioner och färdigheter för repoarkiv ger ytterligare kontext, inte en garanti för att en genererad korrigering uppfyller alla krav. Granska den föreslagna ändringen mot dina standarder, kör valideringskontrollerna och kontrollera att sårbarheten har lösts innan den slås samman.
Billing
Copilot Autofix ingår i din GitHub Advanced Security för Azure DevOps licens. Att generera en korrigering förbrukar AI-krediter från din organisations Azure-debiteringsmätare.
Varje korrigeringsgenerering använder token, som inkluderar indatatoken för kodkontexten som skickas till modellen, utdatatoken för den föreslagna ändringen och cachelagrade token som återanvänder befintlig kontext.
För att hålla faktureringen enkel konverteras dessa token till en standardenhet som kallas för en GitHub AI-kredit, där 1 kredit är lika med 0,01 USD. Avgifterna debiteras till den Azure prenumeration som är länkad till din Azure DevOps organisation och visas som en separat mätare i Azure Cost Management.
Kostnaden för varje korrigering varierar med storleken på den omgivande kodkontexten och ändringens komplexitet.
Note
GitHub Copilot budgetinställningar och användargränser som konfigurerats på GitHub gäller inte för mätarförbrukning för Copilot Autofix i Azure DevOps. Den här användningen debiteras via den Azure prenumeration som är länkad till din Azure DevOps organisation, inte via GitHub Copilot fakturering.
Visa autofixkostnader per projekt
Copilot Autofix har stöd för organisations- och projekttaggar så att du kan filtrera dess användningsavgifter och jämföra kostnader mellan Azure DevOps projekt.
- I Azure portalen öppnar du prenumerationen som är länkad till din Azure DevOps organisation. Gå till Cost Management>.
- Välj det datumintervall som du vill granska.
- Lägg till ett Meter-filter och välj AI-kredit för AzDO GAC. Det här filtret isolerar Autofix-användningsavgifter från andra prenumerationskostnader.
- Lägg till ett taggfilter för
_organizationname_och välj de Azure DevOps organisationer vars kostnader du vill visa. - Ställ in Gruppera efter på taggen
_projectname_för att se autofixets kostnadsuppdelning efter projekt.
Om du vill granska enskilda datum anger du Detaljnivå till Daglig och växlar visualiseringen till Tabell. Behåll mätar- och organisationsfilter och projektgruppering. Du kan också filtrera på taggen _projectname_ för att begränsa tabellen till specifika projekt.
Aktivera Copilot autofix
Du kan aktivera Copilot autofix på organisations-, projekt- eller lagringsplatsnivå. När du aktiverar Autofix i ett bredare omfång gäller inställningen för alla lagringsplatser inom det omfånget. Välj var du vill konfigurera autofix baserat på de lagringsplatser som du vill att inställningen ska gälla för:
| Scope | Var du konfigurerar Autofix |
|---|---|
| Organization | Välj Organisationsinställningar>Lagringsplatser för att aktivera autofix för alla lagringsplatser i organisationen. |
| Projekt | Välj Project inställningar>Lagringsplatser>Alla lagringsplatser för att aktivera Autofix för alla lagringsplatser i project. |
| Lagringsplats | Välj Project inställningar>Lagringsplatser och välj sedan en lagringsplats för att aktivera Autofix för endast den lagringsplatsen. |
Så här aktiverar du Copilot autofix:
- Logga in på din Azure DevOps-organisation (
https://dev.azure.com/{yourorganization}). - Gå till inställningssidan för organisationen, projektet eller lagringsplatsen som du vill konfigurera.
- I avsnittet Avancerad säkerhet letar du upp Autofix för säkerhetsaviseringar. Om du använder fristående Code Security väljer du Alternativ för att öppna panelen Code Security features.
- Välj Autofix för säkerhetsaviseringar. Samma inställning aktiverar Copilot autofix för aviseringar om kodgenomsökning och beroendegenomsökning som stöds.
- Om du använder panelen Kodsäkerhetsfunktioner väljer du Verkställ för att spara ändringarna.
För skärmbilder av både de paketerade inställningarna för Advanced Security och de fristående inställningarna för Code Security, se Konfigurera Copilot Autofix.
Aktivering av autofix konfigurerar inte genomsökning eller genererar inte korrigeringar automatiskt. Konfigurera först kodskanning eller beroendeskanning. Begär sedan en åtgärd för en avisering som stöds.
Skapa en åtgärd för en varning
När du har aktiverat Copilot Autofix använder du samma steg för en avisering om kodgenomsökning som stöds eller en avisering om sårbarhet i beroende.
- Välj Repos>Avancerad säkerhet.
- Öppna aviseringslistan för kodgenomsökning eller beroendegenomsökning och välj sedan en avisering för att öppna dess detaljvy.
- Granska resultatet, påverkad kod eller beroende samt åtgärdsanvisningar.
- Välj Skapa korrigering.
Följande exempel på kodgenomsökning illustrerar det delade arbetsflödet. Ett exempel på beroendegenomsökning visar en genererad pull-begäran senare i det här avsnittet.
Medan Copilot Autofix arbetar med korrigeringen visar detaljvyn för aviseringen att korrigeringen pågår. Copilot Autofix öppnar en pull-begäran när korrigeringen är klar.
Copilot Autofix genererar korrigeringen och öppnar en pull-begäran från en gren med namnet copilot-autofix/.... Pull-begäran är märkt med en Copilot Autofix-tagg som du kan använda för att identifiera Autofix-pull-begäranden i listan med pull-begäranden.
Endast en korrigering kan vara aktiv för samma avisering och gren. När en begäran är under behandling eller dess pipeline körs är Generera korrigering inte tillgängligt. Om en annan begäran skickas samtidigt visar aviseringen att en korrigering redan genereras. Du kan generera ytterligare en korrigering när den aktiva begäran lyckas eller misslyckas.
För CodeQL-aviseringar visas pull-begäran automatiskt under Relaterade pull-begäranden i aviseringsinformationsvyn och fortsätter att uppdateras när generering och slutförande förlopp, så du behöver inte uppdatera sidan.
I följande exempel på beroendegenomsökning visas en aktiv pull-begäran om autofix för ett sårbart paket under Relaterade pull-begäranden.
Om Copilot Autofix inte skapar några kodändringar för aviseringen skapar den inte en gren eller en pull-begäran, och den länkar inte en pull-begäran i aviseringsinformationsvyn. I det här fallet kan du åtgärda aviseringen manuellt. Mer information finns i Det går inte att åtgärda.
Granska och sammanfoga korrigeringen
Den pull-begäran som Copilot Autofix öppnar fungerar som vilken annan pull-begäran i Azure-lagringsplatser som helst. Beskrivningen sammanfattar aviseringen som korrigeringen adresserar.
Etiketten Copilot Autofix identifierar pull-begäranden för autofix.
- Öppna pullbegäran från avsnittet Relaterade pullbegäranden i aviseringen eller från Repos>Pullbegäranden.
- Granska den föreslagna ändringen på fliken Filer för alla berörda filer.
- Redigera ändringen om du behöver matcha kodformatet, namngivningskonventionerna eller projektkraven.
- Godkänn och slutför pull-begäran via ditt normala granskningsarbetsflöde.
När du har slagit samman pull request kör du relevant skanner på den sammanfogade målgrenen. Copilot Autofix kör inte den här genomsökningen efter sammanfogningen.
| Avisering som du har åtgärdat | Vad du ska köra efter sammanslagning |
|---|---|
| Kodgenomsökning | Kör CodeQL eller den tredjepartsskanner som rapporterade aviseringen och publicera de uppdaterade analysresultaten till Advanced Security. |
| Beroendesårbarhet | Kör beroendegenomsökning så att Advanced Security kan bearbeta de uppdaterade beroendena. |
Att slå samman en pull-begäran stänger inte varningen. Advanced Security uppdaterar aviseringstillståndet när det har bearbetat de nya genomsökningsresultaten. Kontrollera att dessa resultat inte längre rapporterar sårbarheten.
Tip
En genererad korrigering är en startpunkt, inte ett slutligt svar. Behandla pull-begäran som andra ändringar: granska den, testa den och begär ytterligare granskare efter behov innan du sammanfogar.
Felsök Copilot Autofix
Korrigering pågår
De flesta Copilot autofix körs på cirka 2–5 minuter. Körningstiden kan variera beroende på den tillgängliga pipelinekapaciteten och ändringens komplexitet. Om alla parallella jobb används förblir pipelinen i kö och aviseringen fortsätter att visa Korrigering pågår tills kapaciteten blir tillgänglig.
En begäran som fortfarande väntar innan en pipeline placeras i kö misslyckas efter 30 minuter. En köad eller pågående pipeline har en tidsgräns på två timmar. Aviseringen kan sluta uppdateras automatiskt innan tidsgränsen för serverdelen nås. Om aviseringen fortfarande pågår:
- Uppdatera aviseringsinformationssidan.
- Om Visa körning är tillgänglig öppnar du pipelinekörningen och kontrollerar om den är i kö eller körs.
- Vänta tills begäran når statusen lyckad eller misslyckad. Skicka inte en annan begäran medan den befintliga begäran är aktiv.
- Om begäran misslyckas granskar du felmeddelandet och väljer Försök åtgärda igen när du har åtgärdat orsaken.
Pull-begäran har skapats men inte länkats till aviseringen
Pullbegäran kan skapas utan problem innan den visas under Relaterade pullbegäranden. Uppdatera aviseringsinformationssidan. Om pull-begäran fortfarande inte är länkad väljer du Repos>Pull-begäranden och letar efter:
- Etiketten för Copilot Autofix.
- En källgren som börjar med
copilot-autofix/. - En rubrik eller beskrivning för pull request som refererar till aviseringen.
Granska och sammanfoga pull-begäran via det normala arbetsflödet för pull-begäran, även om länken inte visas i aviseringen.
Lagringsplats- eller pull-begärandeåtgärder misslyckas
Copilot Autofix gör en grund kloning av grenen som är kopplad till aviseringen. Den initierar inte Git-undermoduler. Den skapar en gren med ett unikt namn copilot-autofix/..., pushar upp den genererade ändringen och öppnar en pullbegäran som är riktad mot varningsgrenen.
Använd Visa körning från aviseringsfeltillståndet för att inspektera pipelineloggarna. I följande tabell visas vanliga orsaker och åtgärder:
| Failure | Vad du bör kontrollera |
|---|---|
| Lagringsplatsen eller grenen kan inte klonas | Kontrollera att repositoriet och larmgrenen fortfarande finns. För en varning som finns i en pull request måste källgrenen och pull requesten fortfarande vara aktiva. Om grenen har tagits bort kör du relevant skanner på den aktuella grenen och genererar en korrigering från den resulterande aviseringen. |
| Korrigeringen beror på kod i en Git-undermodul | Copilot Autofix initierar inte undermoduler. Åtgärda aviseringen manuellt om den nödvändiga kodkontexten lagras i en undermodul. |
| Standardgrenen ändrades eller aviseringsgrenen togs bort | Copilot Autofix riktar sig mot den gren som är associerad med aviseringen, som inte nödvändigtvis är den aktuella standardgrenen. Kör den relevanta skannern på den avsedda grenen och generera en korrigering utifrån varningen på den grenen. |
| Det går inte att skapa en korrigeringsgren | Kontrollera begränsningarna för lagringsplatsens grennamn och neka uttryckligen behörigheter för identiteten GitHub Copilot ({organization}) . Tillåt grenar med prefixet copilot-autofix/ . Ett nytt försök skapar en ny unikt namngiven gren. |
| En grenprincip blockerar ändringen | Slutförandeprinciper för pull requests gäller för Autofix-pull requesten precis som för alla andra pull requests. Uppfyll kraven på obligatoriska granskare och valideringspolicyer innan du slutför. Om en princip för lagringsplatsen blockerar den första pushen uppdaterar du principen så att Autofix-identiteten och grenprefixet tillåts. |
| Det går inte att pusha den genererade commiten | Kontrollera behörigheterna Bidra och Skapa gren för identiteten GitHub Copilot ({organization}), inklusive uttryckliga nekanden. Kontrollera även valideringen av commitförfattarens e-postadress enligt beskrivningen i En korrigering genererades men kunde inte checkas in eller pushas. |
| Det går inte att skapa pull-begäran | Kontrollera behörigheten Contribute to pull requests och behörigheten att skapa etiketten Copilot Autofix för GitHub Copilot ({organization})-identiteten. |
En rättelse genererades men kunde inte checkas in eller pushas
Copilot Autofix använder noreply@dev.azure.com som e-postadress för incheckningsförfattaren. Om en princip för validering av e-postadress för commitförfattare inte tillåter någon med den här adressen kan Copilot Autofix generera kodändringen men kan inte göra en commit eller pusha den för att skapa pullbegäran.
Detaljvyn för aviseringen visar ett felmeddelande som anger e-postadressen för författaren till den blockerade incheckningen.
Lägg till noreply@dev.azure.com i de tillåtna e-postmönstren i verifieringsprincipen för incheckningsförfattarens e-post:
- Välj Projektinställningar>Lagringsplatser.
- Välj Alla lagringsplatser för att uppdatera principen på projektnivå eller välj den lagringsplats som har principen.
- Välj Principer.
- Under Databasprinciper hittar du Validering av e-postadress för incheckningsförfattare.
- Lägg till
noreply@dev.azure.comi de tillåtna e-postmönstren. - Gå tillbaka till aviseringen och välj Retry fix.
En körning misslyckas
Om en Copilot Autofix-körning inte kan slutföras visar varningen en tydlig felstatus så att du snabbt ser att körningen inte lyckades. Från feltillståndet kan du försöka köra igen för att generera en ny korrigering.
En körning kan misslyckas av övergående orsaker eller när körningen inte resulterar i en användbar kodändring. Försök köra igen för att generera korrigeringen igen.
En avisering förblir öppen när du har sammanfogat korrigeringen
Sammanslagning av en pull-begäran för autofix stänger inte aviseringen på egen hand. Advanced Security behöver nya resultat från skannern som rapporterade identifieringen. Om aviseringen förblir öppen:
- Kontrollera att pull requesten har slagits samman i samma gren där varningen identifierades.
- Bekräfta att kodskanning eller beroendeskanning, efter behov, kördes efter sammanslagningen och analyserade den sammanslagna committen.
- Bekräfta att Advanced Security har bearbetat de uppdaterade resultaten för rätt repo och gren.
- Granska de nya resultaten för att kontrollera att säkerhetsproblemet inte längre har identifierats.
- Om sårbarheten fortfarande finns uppdaterar du korrigeringen och kör relevant skanner igen.
Åtgärden är inte tillgänglig
Copilot Autofix kan inte generera en korrigering för varje avisering. En korrigering kanske inte är tillgänglig när:
- Aviseringstypen stöds för närvarande inte av Copilot autofix.
- Copilot avgör att aviseringen kan vara falskt positiv.
- Copilot Autofix körs men skapar inga kodändringar. I det här fallet skapas ingen gren- eller pull-begäran.
Om Copilot Autofix avgör att aviseringen kan vara en falsk positiv och inte genererar några ändringar visas resultatet i detaljvyn för aviseringen. Du kan granska körningen eller köra korrigeringen igen.
När en åtgärd inte är tillgänglig använder du aviseringens vägledning för åtgärd för att åtgärda den manuellt. Avfärda en varning först när du har granskat resultatet och fastställt lämplig orsak till att avfärda den. Mer information finns i information om aviseringar om kodskanning och information om aviseringar om beroendeskanning.