Copilot Autofix voor de codescanning (Preview)

Copilot Autofix is een AI-functie van GitHub Advanced Security for Azure DevOps die voorgestelde oplossingen genereert voor waarschuwingen van codescans. Wanneer CodeQL een beveiligings- of coderingsfout identificeert, kunt u rechtstreeks vanaf het tabblad Geavanceerde beveiliging een oplossing voor de waarschuwing genereren. Copilot Autofix de Copilot coderingsagent gebruikt om de oplossing te produceren en een pull-aanvraag te openen met de voorgestelde wijziging, zodat u deze kunt controleren, bewerken en samenvoegen via de normale werkstroom voor pull-aanvragen.

Note

Deze functie is beperkt beschikbaar als openbare preview. Microsoft accepteert momenteel geen extra gebruikers voor de preview.

Functionaliteit kan zonder kennisgeving worden gewijzigd of verwijderd. Preview-functies hebben geen SLA (Service Level Agreement) en beperkte ondersteuning.

GitHub Advanced Security voor Azure DevOps werkt met Azure-opslagplaatsen. Zie GitHub Advanced Securityvoor informatie over het gebruik van GitHub Advanced Security met GitHub-opslagplaatsen.

Prerequisites

Categorie Requirements
toestemmingen - Een overzicht van alle waarschuwingen voor een opslagplaats weergeven: Inzender machtigingen voor de opslagplaats.
- Waarschuwingen verwijderen in Geavanceerde beveiliging: Project administrator machtigingen.
- Machtigingen beheren in Geavanceerde beveiliging: Lid van de Project Verzamelingsbeheerders groep of Advanced Security: instellingen beheren machtigingen ingesteld op Allow.

Zie Geavanceerde beveiligingsmachtigingen beherenvoor meer informatie over geavanceerde beveiligingsmachtigingen.

  • Codescanning geconfigureerd voor uw opslagplaats, via de standaardconfiguratie of geavanceerde configuratie.
  • Ten minste één waarschuwing voor CodeQL-codescans.

Over Copilot Autofix

Copilot Autofix combineert de analysekracht van CodeQL met het grote taalmodel dat de Copilot coderingsagent aangeeft. Wanneer u een oplossing genereert voor een ondersteunde waarschuwing van codescanning, analyseert Copilot Autofix de waarschuwing en de omliggende code en opent vervolgens een pull request die het volgende bevat:

  • Een voorgestelde codewijziging die betrekking heeft op het onderliggende beveiligingsprobleem.
  • Een beschrijving van de waarschuwing die wordt opgelost, met inbegrip van de waarschuwings-id, ernst en een samenvatting van de wijziging.

Omdat de voorgestelde oplossing rekening houdt met de bredere context van uw codebasis, kan de wijziging meer dan de enkele regel omvatten waarin de waarschuwing is gegenereerd, en kan de wijziging waar nodig wijzigingen in andere bestanden bevatten.

Note

Gegevens die worden verwerkt door Copilot Autofix worden niet gebruikt voor het trainen van grote taalmodellen (LLM's).

Important

Copilot suggesties voor automatisch aanvullen worden gegenereerd door een AI-model en zijn niet gegarandeerd correct, volledig of veilig. Controleer de pull-aanvraag altijd zorgvuldig, controleer of deze de waarschuwing oplost zonder nieuwe problemen te introduceren en test uw wijzigingen voordat u ze samenvoegt.

Ondersteunde talen

Copilot Autofix ondersteunt dezelfde talen die CodeQL analyseert voor codescans, waaronder C/C++, C#, Go, Java/Kotlin, JavaScript/TypeScript, Python, Ruby en Swift. Zie Taal- en queryondersteuning voor de huidige lijst met talen die door CodeQL worden ondersteund.

Billing

Copilot Autofix is opgenomen in uw GitHub Advanced Security voor Azure DevOps licentie. Het genereren van een oplossing verbruikt AI-tegoed van de Azure factureringsmeter van uw organisatie.

Bij elke herstelgeneratie worden tokens gebruikt, waaronder invoertokens voor de codecontext die naar het model wordt verzonden, uitvoertokens voor de voorgestelde wijziging en tokens in de cache die bestaande context hergebruiken.

Om facturering eenvoudig te houden, worden deze tokens geconverteerd naar een standaardeenheid die een GitHub AI-tegoed wordt genoemd, waarbij 1 tegoed gelijk is aan $ 0,01 USD. De kosten worden gefactureerd voor het Azure abonnement dat is gekoppeld aan uw Azure DevOps organisatie en worden weergegeven als een afzonderlijke meter in Azure Cost Management.

De kosten van elke oplossing variëren met de grootte van de omringende codecontext en de complexiteit van de wijziging.

Als u uw dagelijkse kosten wilt bewaken, gaat u in de Azure-portal naar>abonnementskosten>.

Copilot Autofix inschakelen

U kunt Copilot Autofix inschakelen op organisatie-, project- of opslagplaatsniveau. Wanneer u Autofix inschakelt in een breder bereik, is de instelling van toepassing op alle opslagplaatsen binnen dat bereik. Kies waar u Automatischfix wilt configureren op basis van de opslagplaatsen waarop u de instelling wilt toepassen:

Scope Waar autofix te configureren
Organisatie Selecteer Organisatie-instellingen> om Autofix in te schakelen voor alle repositories in de organisatie.
Project Selecteer Project instellingen>Opslagplaatsen Alle opslagplaatsen> om Autofix in te schakelen voor alle opslagplaatsen in de project.
Opslagplaats Selecteer Project instellingen>opslagplaatsen en selecteer vervolgens een opslagplaats om autofix voor alleen die opslagplaats in te schakelen.

Om Copilot Autofix in te schakelen:

  1. Meld u aan bij uw Azure DevOps-organisatie (https://dev.azure.com/{yourorganization}).
  2. Ga naar de instellingenpagina voor het bereik van de organisatie, het project of de opslagplaats die u wilt configureren.
  3. Open in de sectie Advanced Security het deelvenster Code Security-functies .
  4. Selecteer het selectievakje Autofix voor waarschuwingen van codescans om automatische oplossingen te genereren voor waarschuwingen van codescans, gegenereerd door de Copilot-codeeragent.
  5. Selecteer Toepassen om uw wijzigingen op te slaan.

Schermopname van het deelvenster Codebeveiligingsfuncties met het selectievakje Autofix voor waarschuwingen voor het scannen van code gemarkeerd.

CodeQL moet al draaien en waarschuwingen genereren voor de repository. Zie Codescans instellen en Configure GitHub Advanced Security-functies voor meer informatie.

Een oplossing genereren voor een waarschuwing

Nadat u Copilot Autofix hebt ingeschakeld, kunt u een oplossing genereren op basis van elke ondersteunde waarschuwing voor het scannen van code.

  1. Selecteer Repos>Geavanceerde beveiliging.
  2. Selecteer het tabblad Codescan en selecteer vervolgens een waarschuwing om de detailweergave te openen.
  3. Bekijk de locatie, beschrijving en aanbeveling van de waarschuwing om inzicht te krijgen in de bevindingen.
  4. Selecteer Oplossing genereren.

Schermopname van een detailweergave van een waarschuwing voor codescanning met de knop Oplossing genereren rechtsboven.

Terwijl Copilot Autofix werkt voor de oplossing, ziet u in de detailweergave van de waarschuwing dat de oplossing wordt uitgevoerd. Copilot Autofix opent een pull request zodra de oplossing klaar is.

Schermopname van de detailweergave van een waarschuwing voor codescanning waarop Copilot Autofix aan een oplossing werkt voordat er een pull request wordt geopend.

Copilot Autofix genereert de fix en opent een pull request vanuit een branch met de naam copilot-autofix/.... De pull request wordt voorzien van een Copilot Autofix-tag, die u kunt gebruiken om Autofix-pull requests in de lijst met pull requests te identificeren.

Voor CodeQL-waarschuwingen wordt de pull-aanvraag automatisch weergegeven onder Gerelateerde pull-aanvragen in de detailweergave van de waarschuwing en blijft het bijwerken als de voortgang van het genereren en voltooien is voltooid, zodat u de pagina niet hoeft te vernieuwen.

Schermafbeelding van de detailweergave van een waarschuwing voor codescanning met een actieve Autofix-pull request onder Gerelateerde pull requests.

Als Copilot Autofix geen codewijzigingen voor de waarschuwing oplevert, worden er geen branch of pull request gemaakt en wordt er in de detailweergave van de waarschuwing geen pull request gekoppeld. In dit geval herstelt u de waarschuwing handmatig. Zie Fix is niet beschikbaar voor meer informatie.

De bugfix controleren en samenvoegen

De pull request die door Copilot Autofix wordt geopend, werkt net als elke andere pull request in Azure-opslagplaatsen. De beschrijving vat de waarschuwing samen die door de oplossing wordt verholpen.

Schermafbeelding van een pull-aanvraag die is gemaakt door Copilot Autofix, met de waarschuwings-id, ernst en fix details in de beschrijving.

Het label Copilot Autofix identificeert pull-aanvragen voor autofix.

  1. Open de pull-aanvraag in de sectie Gerelateerde pull-aanvragen of vanuit Repos>Pull-aanvragen.
  2. Bekijk de voorgestelde wijziging op het tabblad Bestanden voor alle betrokken bestanden.
  3. Bewerk de wijziging als u de codestijl, naamconventies of projectvereisten wilt aanpassen.
  4. Keur de pull-aanvraag goed en voltooi deze via uw normale beoordelingswerkstroom.

Nadat de pull-aanvraag is samengevoegd en de volgende codescan is voltooid, wordt de waarschuwing automatisch gesloten als de oplossing het onderliggende beveiligingsprobleem verwijdert.

Tip

Een gegenereerde oplossing is een beginpunt, niet een definitief antwoord. Behandel de pull-aanvraag als elke andere wijziging: controleer deze, test deze en vraag indien nodig extra revisoren aan voordat u samenvoegt.

Problemen met Copilot autofix oplossen

Er is een fix gegenereerd, maar deze kon niet worden gecommit of gepusht

Copilot Autofix gebruikt noreply@dev.azure.com als het e-mailadres van de commitauteur. Als e-mailvalidatiebeleid voor doorvoerbewerkingen dit adres niet toestaat, kan Copilot Autofix de codewijziging genereren, maar deze niet doorvoeren of pushen om de pull-aanvraag te maken.

In de detailweergave van de waarschuwing wordt een foutmelding weergegeven die het e-mailadres van de auteur van de geblokkeerde commit identificeert.

Schermopname van een waarschuwing voor het scannen van code die laat zien dat Copilot Autofix een gegenereerde oplossing niet kon doorvoeren omdat het e-mailadres van de auteur van de doorvoer niet is toegestaan.

Voeg noreply@dev.azure.com toe aan de toegestane e-mailpatronen in het validatiebeleid voor het e-mailadres van de commitauteur:

  1. Selecteer Projectinstellingen>Opslagplaatsen.
  2. Selecteer Alle opslagplaatsen om het beleid op projectniveau bij te werken of selecteer de opslagplaats met het beleid.
  3. Selecteer Beleidsregels.
  4. Zoek onder Repositorybeleid naar validatie van het e-mailadres van de auteur van de commit.
  5. Toevoegen noreply@dev.azure.com aan de toegestane e-mailpatronen.
  6. Ga terug naar de waarschuwing voor codescanning en selecteer Opnieuw proberen te herstellen.

Schermopname van de instellingen voor het repositorybeleid waar u het Copilot Autofix-e-mailadres toevoegt aan de toegestane e-mailpatronen voor commitauteurs.

Een uitvoering is mislukt

Als de uitvoering van een Copilot autofix niet kan worden voltooid, wordt in de waarschuwing een prominente foutstatus weergegeven, zodat u snel kunt zien dat de uitvoering niet is geslaagd. Vanuit de foutstatus kunt u de uitvoering opnieuw uitvoeren om een nieuwe oplossing te genereren.

Schermopname van een code scan-waarschuwing waarop een Copilot Autofix-uitvoering in een mislukte status wordt weergegeven, met de optie om de run opnieuw te proberen.

Een uitvoering kan om tijdelijke redenen mislukken of wanneer de uitvoering geen bruikbare codewijziging produceert. Voer de uitvoering opnieuw uit om de oplossing opnieuw te genereren.

Oplossing is niet beschikbaar

Copilot Autofix kan niet voor elke melding een oplossing bieden. Er is mogelijk geen oplossing beschikbaar wanneer:

  • Het waarschuwingstype wordt momenteel niet ondersteund door Copilot Autofix.
  • Copilot bepaalt dat de waarschuwing vals positief zou kunnen zijn.
  • Een aangepaste query of een hulpprogramma van derden, in plaats van CodeQL, genereert de waarschuwing.
  • Copilot Autofix wordt uitgevoerd, maar er worden geen codewijzigingen aangebracht. In dit geval wordt geen branch of pull request aangemaakt.

Als Copilot Autofix bepaalt dat de waarschuwing vals positief kan zijn en geen wijzigingen aanbrengt, wordt het resultaat weergegeven in de detailweergave van de waarschuwing. U kunt de uitvoering controleren of de oplossing opnieuw proberen.

Schermopname van de detailweergave van een waarschuwing voor codescanning, waaruit blijkt dat Copilot heeft vastgesteld dat de waarschuwing mogelijk een vals positief is en geen oplossing heeft voorgesteld, met opties om de run te bekijken of de oplossing opnieuw te proberen.

Wanneer een oplossing niet beschikbaar is, gebruikt u de secties Aanbeveling en Voorbeeld van de waarschuwing om deze te herstellen of de waarschuwing handmatig te sluiten. Zie waarschuwingsdetailsvoor meer informatie.