Copilot Autofix pro skenování kódu (Preview)

Copilot Autofix je funkce využívající umělou inteligenci v GitHub Advanced Security pro Azure DevOps, která generuje navrhované opravy k upozorněním z kontroly kódu. Když CodeQL identifikuje chybu zabezpečení nebo chybu v kódu, můžete vygenerovat opravu pro upozornění přímo z karty Advanced Security. Copilot Autofix používá agenta Copilot pro psaní kódu k vytvoření opravy a otevře pull request s navrženou změnou, takže ji můžete zkontrolovat, upravit a sloučit v rámci běžného pracovního postupu pro pull requesty.

Note

Tato funkce je k dispozici v omezeném veřejném náhledu. Microsoft momentálně nepřijímá další uživatele pro verzi Preview.

Funkce se můžou změnit nebo odebrat bez předchozího upozornění. Funkce preview nemají žádnou smlouvu o úrovni služeb (SLA) a omezenou podporu.

Pokročilé zabezpečení GitHubu pro Azure DevOps funguje s Azure Repos. Pokud chcete používat GitHub Advanced Security s úložišti GitHub, přečtěte si téma GitHub Advanced Security.

Předpoklady

Kategorie Requirements
Permissions – Zobrazení souhrnu všech výstrah pro úložiště: Přispěvatel oprávnění k úložišti.
– Chcete-li zavřít výstrahy v rozšířeném zabezpečení: oprávnění pro správce projektu.
- Správa oprávnění v rozšířeném zabezpečení: Člen skupiny správců kolekce projektů nebo Rozšířené zabezpečení: správa nastavení oprávnění nastavena na Povolit.

Další informace o pokročilých oprávněních zabezpečení naleznete v tématu Správa oprávnění Advanced Security.

  • Skenování kódu nakonfigurované pro vaše úložiště pomocí výchozího nastavení nebo rozšířeného nastavení.
  • Nejméně jedno upozornění nástroje CodeQL pro kontrolu kódu.

Informace o automatickém opravování Copilot

Copilot Autofix kombinuje analytický výkon CodeQL s velkým jazykovým modelem, který využívá agenta kódování Copilot. Když vygenerujete opravu pro podporované upozornění skenování kódu, Copilot Autofix analyzuje upozornění a okolní kód a potom otevře pull request, který obsahuje:

  • Navrhovaná změna kódu, která řeší základní ohrožení zabezpečení.
  • Popis opravené výstrahy, včetně ID výstrahy, závažnosti a souhrnu změny.

Vzhledem k tomu, že navrhovaná oprava považuje širší kontext základu kódu, může změna zahrnovat více než jeden řádek, ve kterém byla výstraha vyvolána, a v případě potřeby může zahrnovat změny v jiných souborech.

Note

Data zpracovávaná nástrojem Copilot Autofix nejsou používána k výcviku velkých jazykových modelů (LLM).

Important

Copilot návrhy automatických oprav generuje model AI a nezaručuje, že jsou správné, úplné nebo zabezpečené. Vždy pečlivě zkontrolujte žádost o přijetí změn, ověřte, že výstrahu vyřeší bez zavedení nových problémů, a před sloučením je otestujte.

Podporované jazyky

Copilot Autofix podporuje stejné jazyky, které CodeQL analyzuje pro kontrolu kódu, včetně C/C++, C#, Go, Java/Kotlin, JavaScript/TypeScript, Python, Ruby a Swiftu. Aktuální seznam jazyků podporovaných kódem CodeQL najdete v tématu Podpora jazyka a dotazů.

Billing

Copilot Autofix je součástí licence GitHub Advanced Security pro Azure DevOps. Vytvoření opravy spotřebuje kredity AI z fakturačního měřiče Azure vaší organizace.

Každá generace oprav využívá tokeny, mezi které patří vstupní tokeny pro kontext kódu odesílaný do modelu, výstupní tokeny pro navrhované změny a tokeny uložené v mezipaměti, které znovu používají existující kontext.

Aby bylo fakturace jednoduchá, tyto tokeny se převedou na standardní jednotku označovanou jako kredit GitHub AI, kde 1 kredit se rovná 0,01 USD. Poplatky se účtují na předplatné Azure propojené s vaší Azure DevOps organizací a v Správa nákladů v Azure se zobrazí jako samostatný měřič.

Náklady na každou opravu se liší podle velikosti okolního kontextu kódu a složitosti změny.

Pokud chcete monitorovat denní poplatky, na portálu Azure přejděte na> službyCost Management>předplatného.

Povolit Copilot Autofix

Funkci Copilot Autofix můžete povolit na úrovni organizace, projektu nebo úložiště. Když povolíte Autofix v širším rozsahu, nastavení se použije na všechna úložiště v tomto rozsahu. Zvolte, kde chcete nastavit Autofix podle toho, na která úložiště se má nastavení vztahovat:

Scope Kde nakonfigurovat automatickou opravu
Organizace Vyberte Nastavení organizace>, aby bylo možné povolit Autofix pro všechny repozitáře v organizaci.
Projekt Vyberte Nastavení projektu>Úložiště>Všechna úložiště, chcete-li povolit automatické opravy pro všechna úložiště v projektu.
Repository Vyberte Project nastavení>Úložiště a pak vyberte úložiště, které povolí automatické opravy pouze pro toto úložiště.

Zapnutí funkce Copilot Autofix:

  1. Přihlaste se ke své organizaci Azure DevOps (https://dev.azure.com/{yourorganization}).
  2. Přejděte na stránku nastavení oboru organizace, projektu nebo úložiště, který chcete nakonfigurovat.
  3. V části Rozšířené zabezpečení otevřete panel Funkce zabezpečení kódu .
  4. Zaškrtněte políčko Autofix pro výstrahy kontroly kódu a vytvořte automatické opravy pro výstrahy kontroly kódu vygenerované agentem kódování Copilot.
  5. Výběrem možnosti Použít změny uložte.

Snímek obrazovky panelu funkcí zabezpečení kódu se zvýrazněným zaškrtávacím políčkem Autofix for code scanning alerts.

CodeQL už musí být spuštěný a generovat výstrahy pro úložiště. Další informace najdete v tématu Nastavování skenování kódu a Konfigurování GitHub pokročilých funkcí zabezpečení.

Vygenerování opravy pro upozornění

Po povolení funkce Copilot Autofix můžete vygenerovat opravu pro jakékoli podporované upozornění kontroly kódu.

  1. Vyberte Repos>Advanced Security.
  2. Vyberte kartu Kontrola kódu a pak výběrem výstrahy otevřete zobrazení podrobností.
  3. Zkontrolujte Umístění, Popis a Doporučení výstrahy, abyste porozuměli zjištění.
  4. Vyberte Vygenerovat opravu.

Snímek obrazovky s podrobným zobrazením upozornění kontroly kódu s tlačítkem Generovat opravu v pravém horním rohu

Zatímco Copilot Autofix pracuje na opravě, zobrazení podrobností upozornění ukazuje, že oprava probíhá. Copilot Autofix otevře žádost o sloučení, když je oprava připravená.

Snímek obrazovky zobrazení podrobností upozornění skenování kódu, kde Copilot Autofix pracuje na opravě před otevřením pull requestu.

Copilot Autofix vygeneruje opravu a otevře pull request z větve pojmenované copilot-autofix/.... Pull request je označen tagem Copilot Autofix, který můžete použít k rozpoznání pull requestů Autofix v seznamu pull requestů.

U upozornění CodeQL se pull request automaticky zobrazí v podrobném zobrazení upozornění v části Související pull requesty a průběžně se aktualizuje podle toho, jak postupuje generování a dokončování, takže stránku nemusíte obnovovat.

Snímek obrazovky s detailem výstrahy skenování kódu, který v části Související pull requesty zobrazuje aktivní pull request automatické opravy.

Pokud Copilot Autofix pro dané upozornění nevygeneruje žádné změny kódu, nevytvoří větev ani pull request a v zobrazení podrobností upozornění na pull request neodkáže. V takovém případě opravte výstrahu ručně. Další informace najdete v tématu Oprava není k dispozici.

Zkontrolovat a sloučit opravu

Pull request, který otevře Copilot Autofix, se chová stejně jako jakýkoli jiný pull request v Azure Repos. Jeho popis shrnuje výstrahu, kterou oprava řeší.

Snímek obrazovky žádosti o přijetí změn vytvořené funkcí Copilot Autofix, zobrazující ID výstrahy, závažnost a podrobnosti o opravě v popisu.

Štítek Copilot Autofix označuje pull requesty automatických oprav.

  1. Otevřete požadavek na přetažení v části upozornění Související požadavky na přetažení nebo z nabídky Repos>Pull requests.
  2. Zkontrolujte navrženou změnu na kartě Soubory ve všech ovlivněných souborech.
  3. Upravte změnu, pokud potřebujete odpovídat stylu kódu, konvencím pojmenování nebo požadavkům projektu.
  4. Schvalte a dokončete pull request v rámci běžného procesu kontroly.

Po sloučení žádosti o přijetí změn a dokončení dalšího spuštění kontroly kódu se výstraha automaticky zavře, pokud oprava odebere základní ohrožení zabezpečení.

Tip

Vygenerovaná oprava je výchozí bod, nikoli konečná odpověď. S požadavkem na začlenění zacházejte jako s jakoukoli jinou změnou: před sloučením ho zkontrolujte, otestujte a podle potřeby požádejte o posouzení další recenzenty.

Řešení problémů s Copilot Autofix

Vygenerovala se oprava, ale nepodařilo se ji potvrdit ani odeslat.

Copilot autofix používá noreply@dev.azure.com jako e-mail autora potvrzení. Pokud zásada ověřování e-mailové adresy autora commitu tuto adresu nepovoluje, Copilot Autofix může vygenerovat změnu kódu, ale nemůže ji commitnout ani odeslat, aby vytvořil pull request.

Zobrazení podrobností výstrahy zobrazuje chybu, která identifikuje blokovaný e-mail autora potvrzení.

Snímek obrazovky s upozorněním z kontroly kódu, které ukazuje, že Copilot Autofix nemohl zapsat vygenerovanou opravu do commitu, protože e-mail autora commitu není povolen.

Přidejte noreply@dev.azure.com do povolených vzorů e-mailu v zásadách ověření e-mailu autora potvrzení:

  1. Vyberte nastavení projektu>úložiště.
  2. Vyberte Všechna úložiště , aby se aktualizovaly zásady na úrovni projektu, nebo vyberte úložiště, které má zásadu.
  3. Vyberte Zásady.
  4. V části Zásady úložiště vyhledejte možnost Ověření e-mailové adresy autora potvrzení změn.
  5. Přidejte noreply@dev.azure.com do povolených vzorů e-mailů.
  6. Vraťte se k upozornění na skenování kódu a vyberte Opakovat opravu.

Snímek obrazovky s nastavením zásad úložiště, kde přidáte e-mailovou adresu Copilot Autofix do povolených vzorů e-mailových adres autorů commitů.

Běh se nezdařil

Pokud nelze dokončit běh funkce Copilot Autofix, upozornění zobrazí zřetelný stav selhání, abyste rychle poznali, že běh nebyl úspěšný. Ze stavu selhání můžete spuštění zopakovat a vygenerovat novou opravu.

Snímek obrazovky s upozorněním kontroly kódu, které zobrazuje běh Copilot Autofix v neúspěšném stavu s možností tento běh opakovat.

Spuštění může selhat z přechodných důvodů nebo když spuštění nevytváří použitelnou změnu kódu. Opakujte spuštění a vygenerujte opravu znovu.

Oprava není k dispozici

Copilot Autofix nedokáže vygenerovat opravu pro každé upozornění. Oprava nemusí být dostupná, když:

  • Copilot Autofix tento typ upozornění momentálně nepodporuje.
  • Copilot určuje, že výstraha může být falešně pozitivní.
  • Vlastní dotaz nebo nástroj třetí strany místo CodeQL vygeneruje výstrahu.
  • Copilot Autofix se spustí, ale nevytvoří žádné změny v kódu. V tomto případě se nevytvořila žádná větev ani žádost o přijetí změn.

Pokud Copilot Autofix zjistí, že jde o falešně pozitivní výstrahu, a neprovede žádné změny, ve zobrazení podrobností výstrahy se zobrazí výsledek. Můžete zkontrolovat průběh nebo opravu spustit znovu.

Snímek obrazovky s podrobným zobrazením výstrahy kontroly kódu ukazující, že Copilot zjistili, že výstraha může být falešně pozitivní a nevygenerovaná žádná oprava s možnostmi pro zobrazení spuštění nebo opakování opravy

Pokud není oprava k dispozici, použijte k nápravě problému oddíly Doporučení a Příklad v upozornění nebo upozornění ručně zavřete. Další informace najdete v tématu Podrobnosti výstrahy.