Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Copilot Autofix ist ein KI-gestütztes Feature von GitHub Advanced Security for Azure DevOps, das vorgeschlagene Korrekturen für Codescanbenachrichtigungen generiert. Wenn CodeQL einen Sicherheitsrisiko- oder Codierungsfehler identifiziert, können Sie direkt über die Registerkarte "Erweiterte Sicherheit" einen Fix für die Warnung generieren. Copilot Autofix verwendet den Copilot-Codierungs-Agent, um den Fix zu erstellen und eine Pullanforderung mit der vorgeschlagenen Änderung zu öffnen, sodass Sie sie über Ihren normalen Pullanforderungsworkflow überprüfen, bearbeiten und zusammenführen können.
Note
Dieses Feature befindet sich in eingeschränkter öffentlicher Vorschau. Microsoft akzeptiert derzeit keine zusätzlichen Benutzer für die Vorschau.
Die Funktionalität kann sich ändern oder ohne vorherige Ankündigung entfernt werden. Vorschaufeatures verfügen über keinen Service Level Agreement (SLA) und eingeschränkten Support.
GitHub Advanced Security for Azure DevOps funktioniert mit Azure Repos. Informationen zur Verwendung von GitHub Advanced Security mit GitHub-Repositorys finden Sie unter GitHub Advanced Security.
Voraussetzungen
| Kategorie | Anforderungen |
|---|---|
| Erlaubnisse | – Um eine Zusammenfassung aller Warnungen für ein Repository anzuzeigen: Beitragsberechtigungen für das Repository. - Um Warnhinweise in der erweiterten Sicherheit zu verwerfen: Projektadministrator Berechtigungen. – Zum Verwalten von Berechtigungen in Advanced Security: Mitglied der Project Collection Administratoren-Gruppe oder Berechtigung „Advanced Security: Einstellungen verwalten“ auf „Zulassen“ setzen. |
Weitere Informationen zu Erweiterten Sicherheitsberechtigungen finden Sie unter "Verwalten erweiterter Sicherheitsberechtigungen".
- Codeüberprüfung, die für Ihr Repository konfiguriert ist, entweder mithilfe des Standardsetups oder des erweiterten Setups.
- Mindestens eine CodeQL-Codeüberprüfungswarnung.
- Die Repository-Berechtigung Erweiterte Sicherheit: Warnungen anzeigen für den Benutzer, der Korrektur generieren auswählt.
- Zugriff auf den Azure Pipelines Agentpool. Copilot Autofix reiht einen Microsoft-gehosteten Pipeline-Job in die Warteschlange ein, um die Fehlerbehebung zu generieren und zu veröffentlichen. Für die Ausführung ist ein verfügbarer paralleler Auftrag erforderlich. Wenn alle parallelen Aufträge belegt sind, bleibt der Fix in der Warteschlange, bis wieder Kapazität verfügbar ist.
Copilot Autofix führt Repositoryvorgänge mithilfe einer dedizierten Identität namens GitHub Copilot ({organization}) aus, nicht mit einem Projekt- oder Sammlungs-Builddienstkonto. Der Dienst gewährt der Identität automatisch die folgenden Berechtigungen:
| Operation | Erlaubnis |
|---|---|
| Zugreifen auf das Projekt | Projektebeneninformationen anzeigen |
| Klonen des Repositorys | Lesen Sie |
| Fix-Branch erstellen und übertragen | Mitwirken und Branch erstellen |
| Erstellen und Aktualisieren der Pullanforderung | Zu Pull-Requests beitragen |
| Lesen Sie die Warnung zur Codeüberprüfung | Erweiterte Sicherheit: Anzeigen von Warnungen |
| Pull-Request-Diskussionen hinzufügen | Pull-Request-Diskussionen lesen und dazu beitragen |
| Aktualisieren der Pipelineausführung | Buildinformationen aktualisieren |
| Beschriften der Pullanforderung | Erstellen der Copilot Autofix-Bezeichnung |
Sie müssen einem Build-Service-Konto diese Berechtigungen nicht gewähren. Wenn Ihre Organisation explizite Verweigerungsberechtigungen verwendet, überprüfen Sie, ob sie die GitHub Copilot ({organization}) Identität nicht blockieren.
Informationen zu Copilot Autofix
Copilot Autofix kombiniert die Analyseleistung von CodeQL mit dem großen Sprachmodell, das den Copilot Codierungs-Agent unterstützt. Wenn Sie einen Fix für eine unterstützte Codeüberprüfungswarnung generieren, analysiert Copilot Autofix die Warnung und den umgebenden Code und öffnet dann eine Pullanforderung, die Folgendes enthält:
- Eine vorgeschlagene Codeänderung , die die zugrunde liegende Sicherheitsanfälligkeit behebt.
- Eine Beschreibung der Warnung, die behoben wird, einschließlich der Warnungs-ID, des Schweregrads und einer Zusammenfassung der Änderung.
Da die vorgeschlagene Lösung den breiteren Kontext Ihrer Codebasis berücksichtigt, kann die Änderung mehr als die einzelne Zeile umfassen, in der die Warnung ausgelöst wurde, und änderungen an anderen Dateien bei Bedarf enthalten.
Note
Daten, die von Copilot Autofix verarbeitet werden, werden nicht zum Trainieren großer Sprachmodelle (LLMs) verwendet.
Important
Copilot Autofix-Vorschläge werden von einem KI-Modell generiert und sind nicht garantiert korrekt, vollständig oder sicher. Überprüfen Sie die Pull-Anforderung immer sorgfältig, überprüfen Sie, ob sie die Warnung löst, ohne neue Probleme einzuführen, und testen Sie Ihre Änderungen, bevor Sie sie zusammenführen.
Unterstützte Sprachen
Copilot Autofix unterstützt dieselben Sprachen wie CodeQL für die Codeüberprüfung, einschließlich C/C++, C#, Go, Java/Kotlin, JavaScript/TypeScript, Python, Ruby und Swift. Die aktuelle Liste der von CodeQL unterstützten Sprachen finden Sie unter Sprach- und Abfrageunterstützung.
Billing
Copilot Autofix ist in Ihrer GitHub Advanced Security für Azure DevOps-Lizenz enthalten. Das Generieren einer Problembehebung belastet den Azure-Abrechnungszähler Ihrer Organisation mit KI-Credits.
Jede Fixgenerierung verwendet Token, einschließlich Eingabetoken für den an das Modell gesendeten Codekontext, Ausgabetoken für die vorgeschlagene Änderung und zwischengespeicherte Token, die vorhandenen Kontext wiederverwenden.
Um die Abrechnung einfach zu halten, werden diese Token in eine Standardeinheit umgewandelt, die als GitHub AI-Gutschrift bezeichnet wird, wobei 1 Gutschrift 0,01 USD entspricht. Die Gebühren werden dem Azure Abonnement in Rechnung gestellt, das mit Ihrer Azure DevOps Organisation verknüpft ist und als separater Meter in Azure Cost Management angezeigt wird.
Die Kosten für jeden Fix variieren je nach Größe des umgebenden Codekontexts und der Komplexität der Änderung.
Um Ihre täglichen Kosten zu überwachen, navigieren Sie im Azure-Portal zu >>Kostenanalyse.
Aktivieren von Copilot Autofix
Sie können Copilot Autofix auf Organisation-, Projekt- oder Repositoryebene aktivieren. Wenn Sie Autofix in einem breiteren Bereich aktivieren, gilt die Einstellung für alle Repositorys innerhalb dieses Bereichs. Wählen Sie aus, wo Autofix basierend auf den Repositorys konfiguriert werden soll, auf die die Einstellung angewendet werden soll:
| Scope | Wo autofix konfiguriert werden soll |
|---|---|
| Organisation | Wählen Sie Organisationseinstellungen> aus, um Autofix für alle Repositorys in der Organisation zu aktivieren. |
| Projekt | Wählen Sie Project Einstellungen>Repositorys>alle Repositorys aus, um Autofix für alle Repositorys im project zu aktivieren. |
| Repository | Wählen Sie Projekteinstellungen> aus, und wählen Sie dann ein Repository aus, um Autofix nur für dieses Repository zu aktivieren. |
So aktivieren Sie Copilot Autofix:
- Melden Sie sich bei Ihrer Azure DevOps-Organisation (
https://dev.azure.com/{yourorganization}) an. - Wechseln Sie zur Einstellungsseite für den Organisations-, Projekt- oder Repositorybereich, den Sie konfigurieren möchten.
- Im Abschnitt Erweiterte Sicherheit öffnen Sie den Bereich Code-Sicherheitsfunktionen.
- Aktivieren Sie das Kontrollkästchen Autofix für Codescanbenachrichtigungen, um automatische Korrekturen für Codescanbenachrichtigungen zu erstellen, die vom Copilot Codierungs-Agent generiert werden.
- Wählen Sie Übernehmen, um die Änderungen zu speichern.
CodeQL muss für das Repository bereits laufen und Warnungen generieren. Weitere Informationen finden Sie unter Codescanning einrichten und GitHub-Advanced-Security-Features konfigurieren.
Fehlerbehebung für eine Warnung generieren
Nachdem Sie Copilot Autofix aktiviert haben, können Sie einen Fix aus jeder unterstützten Codeüberprüfungswarnung generieren.
- Wählen Sie Repos>Advanced Security aus.
- Wählen Sie die Registerkarte „Codescan“ aus, und wählen Sie dann eine Warnmeldung aus, um deren Detailansicht zu öffnen.
- Überprüfen Sie den Ort, die Beschreibung und die Empfehlung der Warnmeldung, um den Befund zu verstehen.
- Wählen Sie Korrektur generieren aus.
Während Copilot Autofix an der Behebung arbeitet, zeigt die Warnungsdetailansicht an, dass die Behebung im Gange ist. Copilot Autofix öffnet eine Pullanforderung, wenn der Fix bereit ist.
Copilot Autofix generiert die Fehlerbehebung und öffnet einen Pull Request aus einem Branch mit dem Namen copilot-autofix/.... Die Pullanforderung wird mit einem Copilot Autofix-Tag beschriftet, mit dem Sie Autofix-Pullanforderungen in der Liste der Pullanforderungen identifizieren können.
Für dieselbe Warnung und denselben Branch kann nur eine Korrektur aktiv sein. Solange eine Anfrage noch aussteht oder ihre Pipeline läuft, ist Fix generieren nicht verfügbar. Wenn gleichzeitig eine andere Anforderung übermittelt wird, zeigt die Warnung an, dass bereits ein Fix generiert wird. Sie können einen weiteren Fix generieren, nachdem die aktive Anforderung erfolgreich war oder fehlschlägt.
Bei CodeQL-Warnungen wird die Pullanforderung automatisch unter "Verwandte Pullanforderungen " in der Warnungsdetailansicht angezeigt und wird weiterhin als Generierungs- und Abschlussfortschritt aktualisiert, sodass Sie die Seite nicht aktualisieren müssen.
Wenn Copilot Autofix keine Codeänderungen für die Warnung erzeugt, erstellt es weder einen Branch noch einen Pull Request und verlinkt auch keinen Pull Request in der Detailansicht der Warnung. Beheben Sie die Warnung in diesem Fall manuell. Weitere Informationen finden Sie unter "Fix" ist nicht verfügbar.
Überprüfen und den Fix zusammenführen
Der Pull Request, den Copilot Autofix öffnet, verhält sich wie jeder andere Pull Request in Azure Repos. Ihre Beschreibung fasst die Warnung zusammen, die durch den Fix behoben wird.
Die Copilot Autofix-Bezeichnung identifiziert Autofix-Pullanforderungen.
- Öffnen Sie den Pull Request im Abschnitt Zugehörige Pull Requests der Warnung oder über Repos>Pull Requests.
- Überprüfen Sie die vorgeschlagene Änderung auf der Registerkarte "Dateien " in allen betroffenen Dateien.
- Passen Sie die Änderung an, wenn Sie sie an Ihren Codestil, Ihre Benennungskonventionen oder Ihre Projektanforderungen anpassen müssen.
- Genehmigen und abschließen Sie die Pullanforderung über Ihren normalen Überprüfungsworkflow.
Nachdem Sie die Pullanforderung zusammengeführt haben, führen Sie CodeQL in der zusammengeführten Zielverzweigung aus, und laden Sie die neuen SARIF-Ergebnisse hoch. Copilot Autofix führt diese Überprüfung nach dem Zusammenführen nicht aus. Die Warnung wird automatisch geschlossen, nachdem die aktualisierte Analyse die Sicherheitsanfälligkeit nicht mehr meldet.
Tip
Ein generierter Fix ist ein Ausgangspunkt und keine endgültige Antwort. Behandeln Sie die Pullanforderung wie jede andere Änderung: Überprüfen Sie sie, testen Sie sie, und fordern Sie weitere Prüfer nach Bedarf an, bevor Sie die Zusammenführung ausführen.
Fehlerbehebung für Copilot Autofix
Behebung läuft
Die meisten Copilot Autofix-Läufe werden in etwa 2 bis 5 Minuten abgeschlossen. Die Laufzeit kann je nach verfügbarer Pipelinekapazität und Komplexität der Änderung variieren. Wenn alle parallelen Aufträge belegt sind, bleibt die Pipeline in der Warteschlange, und die Warnung zeigt weiterhin Behebung läuft an, bis wieder Kapazität verfügbar ist.
Eine Anforderung, die noch aussteht, bevor eine Pipeline in die Warteschlange gestellt wird, schlägt nach 30 Minuten fehl. Eine in der Warteschlange befindliche oder laufende Pipeline hat ein Timeout von zwei Stunden. Die Warnung wird möglicherweise nicht mehr automatisch aktualisiert, bevor das Back-End-Timeout erreicht ist. Wenn die Warnmeldung noch aktiv ist:
- Aktualisieren Sie die Benachrichtigungsdetailseite.
- Wenn Ausführung anzeigen verfügbar ist, öffnen Sie die Pipeline-Ausführung und überprüfen Sie, ob sie in der Warteschlange ist oder ausgeführt wird.
- Warten Sie, bis die Anfrage den Status „erfolgreich“ oder „fehlgeschlagen“ erreicht. Senden Sie keine weitere Anforderung, während die vorhandene Anforderung aktiv ist.
- Wenn die Anforderung fehlschlägt, überprüfen Sie die Fehlermeldung, und wählen Sie "Wiederholen" aus , nachdem Sie die Ursache behoben haben.
Pullanforderung erstellt, aber nicht mit der Warnung verknüpft
Die Pullanforderung kann erfolgreich erstellt werden, bevor sie unter "Verwandte Pullanforderungen" angezeigt wird. Aktualisieren Sie die Benachrichtigungsdetailseite. Wenn die Pullanforderung immer noch nicht verknüpft ist, wählen Sie Repos>Pull-Anforderungen aus, und suchen Sie nach:
- Die Copilot Autofix-Bezeichnung.
- Ein Quellzweig, der mit
copilot-autofix/beginnt. - Ein Pullanforderungstitel, der auf die Codeüberprüfungswarnung verweist.
Überprüfen Sie den Pull-Request und führen Sie ihn im normalen Pull-Request-Workflow zusammen, auch wenn der Link nicht in der Warnmeldung angezeigt wird.
Repository- oder Pullanforderungsvorgänge schlagen fehl
Copilot Autofix erstellt einen flachen Klon des Branches, der mit der Warnung verknüpft ist. Es initialisiert keine Git-Untermodule. Es erstellt einen eindeutig benannten copilot-autofix/... Branch, pusht die generierte Änderung und öffnet einen Pull-Request, der auf den Alert-Branch abzielt.
Verwenden Sie die Ansichtsausführung aus dem Warnungsfehlerstatus, um die Pipelineprotokolle zu überprüfen. In der folgenden Tabelle sind häufige Ursachen und Aktionen aufgeführt:
| Failure | Was soll überprüft werden? |
|---|---|
| Das Repository oder der Branch kann nicht geklont werden. | Stellen Sie sicher, dass das Repository und der Alert-Branch noch vorhanden sind. Für eine Warnung, die in einer Pullanforderung gefunden wird, muss der Quellzweig und die Pullanforderung noch aktiv sein. Wenn die Verzweigung gelöscht wurde, führen Sie CodeQL für die aktuelle Verzweigung aus, und generieren Sie einen Fix aus der resultierenden Warnung. |
| Der Fix hängt von Code in einem Git-Untermodul ab. | Copilot Autofix initialisiert keine Untermodule. Korrigieren Sie die Warnung manuell, wenn der erforderliche Codekontext in einem Untermodul gespeichert ist. |
| Der Standard-Branch wurde geändert oder der Alert-Branch wurde gelöscht. | Copilot Autofix zielt auf den Branch ab, der dem Alert zugeordnet ist, was nicht unbedingt der aktuelle Standardbranch ist. Führen Sie CodeQL auf dem vorgesehenen Branch aus und generieren Sie einen Fix auf Grundlage des Alerts dieses Branches. |
| Es kann kein Korrektur-Branch erstellt werden. | Überprüfen Sie die Einschränkungen für Repository-Verzweigungsnamen und die expliziten Verweigerungsberechtigungen für die GitHub Copilot ({organization}) Identität. Verzweigungen mit dem copilot-autofix/ Präfix zulassen. Ein Wiederholungsversuch erstellt einen neuen Branch mit einem eindeutigen Namen. |
| Eine Branchrichtlinie blockiert die Änderung | Die Pullanforderungsvervollständigungsrichtlinien gelten für die Autofix-Pullanforderung wie jede andere Pullanforderung. Erfüllen Sie die Anforderungen der erforderlichen Prüfer und Validierungsrichtlinien, bevor Sie ihn abschließen. Wenn eine Repositoryrichtlinie den anfänglichen Push blockiert, aktualisieren Sie die Richtlinie so, dass das Autofix-Identitäts- und Verzweigungspräfix zulässig ist. |
| Der generierte Commit kann nicht gepusht werden. | Überprüfen Sie die Berechtigungen Beitragen und Branch erstellen für die Identität GitHub Copilot ({organization}), einschließlich expliziter Verweigerungen. Überprüfen Sie außerdem die Validierung der E-Mail-Adresse des Commit-Autors, wie in Es wurde ein Fix erstellt, konnte aber nicht committet oder gepusht werden beschrieben. |
| Die Pullanforderung kann nicht erstellt werden. | Überprüfen Sie die Berechtigung, zu Pull Requests beizutragen, und die Berechtigung zum Erstellen des Copilot Autofix-Labels für die GitHub Copilot ({organization}) Identität. |
Eine Korrektur wurde generiert, konnte jedoch nicht committet oder gepusht werden
Copilot Autofix verwendet noreply@dev.azure.com als E-Mail-Adresse des Commit-Autors. Wenn eine Richtlinie zur E-Mail-Validierung des Commit-Autors diese Adresse nicht zulässt, kann Copilot Autofix die Codeänderung zwar generieren, sie jedoch nicht committen oder pushen, um den Pull-Request zu erstellen.
In der Warnungsdetailseite wird ein Fehler angezeigt, der die E-Mail des blockierten Commit-Autors identifiziert.
Fügen Sie noreply@dev.azure.com zu den zulässigen E-Mail-Mustern in der Validierungsrichtlinie für die E-Mail-Adresse des Commit-Autors hinzu:
- Wählen Sie Projekteinstellungen>Repositories aus.
- Wählen Sie "Alle Repositorys " aus, um die Richtlinie auf Projektebene zu aktualisieren, oder wählen Sie das Repository mit der Richtlinie aus.
- Wählen Sie "Richtlinien" aus.
- Suchen Sie unter Repositoryrichtlinien nach Überprüfung der E-Mail-Adresse des Commit-Autors.
- Fügen Sie
noreply@dev.azure.comzu den zulässigen E-Mail-Mustern hinzu. - Kehren Sie zur Codescanning-Warnung zurück und wählen Sie Fehlerbehebung erneut versuchen.
Die Ausführung schlägt fehl
Wenn eine Copilot Autofix-Ausführung nicht abgeschlossen werden kann, zeigt die Warnung einen prominenten Fehlerstatus an, sodass Sie schnell sehen können, dass die Ausführung nicht erfolgreich war. Im Fehlerstatus können Sie den Lauf erneut starten, um eine neue Korrektur zu generieren.
Eine Ausführung kann aus vorübergehenden Gründen fehlschlagen oder wenn die Ausführung keine verwendbare Codeänderung erzeugt. Wiederholen Sie die Ausführung, um den Fix erneut zu generieren.
Eine Warnmeldung bleibt offen, nachdem Sie die Fehlerbehebung zusammengeführt haben.
Durch das Zusammenführen einer Autofix-Pullanforderung wird die Warnung erst geschlossen, wenn eine spätere CodeQL-Analyse den zusammengeführten Code verarbeitet. Wenn die Warnung geöffnet bleibt:
- Stellen Sie sicher, dass der Pull Request in denselben Branch zusammengeführt wurde, in dem die Warnung erkannt wurde.
- Vergewissern Sie sich, dass eine CodeQL-Überprüfung nach dem Zusammenführen ausgeführt und der zusammengeführte Commit analysiert wurde.
- Vergewissern Sie sich, dass der Scan die SARIF-Ergebnisse erfolgreich für das richtige Repository und den richtigen Branch hochgeladen hat.
- Überprüfen Sie die neuen Ergebnisse, um zu überprüfen, ob die Sicherheitsanfälligkeit nicht mehr erkannt wird.
- Wenn die Sicherheitsanfälligkeit noch vorhanden ist, aktualisieren Sie den Fix, und führen Sie CodeQL erneut aus.
Fehlerbehebung ist nicht verfügbar
Copilot Autofix kann für jede Warnung keinen Fix generieren. Ein Fix ist möglicherweise nicht verfügbar, wenn:
- Der Warnungstyp wird derzeit nicht von Copilot Autofix unterstützt.
- Copilot stellt fest, dass es sich bei der Warnung um einen Fehlalarm handeln könnte.
- Eine benutzerdefinierte Abfrage oder ein Drittanbietertool anstelle von CodeQL generiert die Warnung.
- Copilot Autofix wird ausgeführt, erzeugt aber keine Codeänderungen. In diesem Fall wird kein Branch und kein Pull Request erstellt.
Wenn Copilot Autofix feststellt, dass die Warnung falsch positiv sein könnte und keine Änderungen erzeugt, zeigt die Warnungsdetailseite das Ergebnis an. Sie können die Ausführung überprüfen oder den Fix wiederholen.
Wenn ein Fix nicht verfügbar ist, verwenden Sie die Abschnitte "Empfehlung " und " Beispiel " der Warnung, um sie zu beheben oder die Warnung manuell zu schließen. Weitere Informationen finden Sie unter Warnungsdetails.