Copilot Autofix für das Codescanning (Vorschau)

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.

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:

  1. Melden Sie sich bei Ihrer Azure DevOps-Organisation (https://dev.azure.com/{yourorganization}) an.
  2. Wechseln Sie zur Einstellungsseite für den Organisations-, Projekt- oder Repositorybereich, den Sie konfigurieren möchten.
  3. Im Abschnitt Erweiterte Sicherheit öffnen Sie den Bereich Code-Sicherheitsfunktionen.
  4. Aktivieren Sie das Kontrollkästchen Autofix für Codescanbenachrichtigungen, um automatische Korrekturen für Codescanbenachrichtigungen zu erstellen, die vom Copilot Codierungs-Agent generiert werden.
  5. Wählen Sie Übernehmen, um die Änderungen zu speichern.

Screenshot des Bereichs

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.

  1. Wählen Sie Repos>Advanced Security aus.
  2. Wählen Sie die Registerkarte „Codescan“ aus, und wählen Sie dann eine Warnmeldung aus, um deren Detailansicht zu öffnen.
  3. Überprüfen Sie den Ort, die Beschreibung und die Empfehlung der Warnmeldung, um den Befund zu verstehen.
  4. Wählen Sie Korrektur generieren aus.

Screenshot der Detailansicht einer Code-Scanning-Warnung mit der Schaltfläche „Fix generieren“ oben rechts.

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.

Screenshot der Detailansicht einer Code-Scan-Warnung, der zeigt, wie Copilot Autofix an einer Korrektur arbeitet, bevor ein Pull-Request eröffnet wird.

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.

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.

Screenshot der Detailansicht einer Code-Scanning-Warnung mit einem aktiven Autofix-Pull-Request unter „Zugehörige Pull Requests“.

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.

Screenshot einer von Copilot Autofix erstellten Pullanforderung mit der Warnungs-ID, dem Schweregrad und der Behebung von Details in der Beschreibung.

Die Copilot Autofix-Bezeichnung identifiziert Autofix-Pullanforderungen.

  1. Öffnen Sie den Pull Request im Abschnitt Zugehörige Pull Requests der Warnung oder über Repos>Pull Requests.
  2. Überprüfen Sie die vorgeschlagene Änderung auf der Registerkarte "Dateien " in allen betroffenen Dateien.
  3. Passen Sie die Änderung an, wenn Sie sie an Ihren Codestil, Ihre Benennungskonventionen oder Ihre Projektanforderungen anpassen müssen.
  4. Genehmigen und abschließen Sie die Pullanforderung über Ihren normalen Überprüfungsworkflow.

Nachdem die Pullanforderung zusammengeführt wurde und die nächste Codeüberprüfung abgeschlossen ist, wird die Warnung automatisch geschlossen, wenn der Fix die zugrunde liegende Sicherheitsanfälligkeit entfernt.

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

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.

Screenshot einer Warnung beim Code-Scanning, die zeigt, dass Copilot Autofix keinen Commit mit einem generierten Fix erstellen konnte, weil die E-Mail-Adresse des Commit-Autors nicht erlaubt ist.

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:

  1. Wählen Sie Projekteinstellungen>Repositories aus.
  2. Wählen Sie "Alle Repositorys " aus, um die Richtlinie auf Projektebene zu aktualisieren, oder wählen Sie das Repository mit der Richtlinie aus.
  3. Wählen Sie "Richtlinien" aus.
  4. Suchen Sie unter Repositoryrichtlinien nach Überprüfung der E-Mail-Adresse des Commit-Autors.
  5. Fügen Sie noreply@dev.azure.com zu den zulässigen E-Mail-Mustern hinzu.
  6. Kehren Sie zur Codescanning-Warnung zurück und wählen Sie Fehlerbehebung erneut versuchen.

Screenshot der Einstellungen für Repositoryrichtlinien, in dem Sie die E-Mail-Adresse von Copilot Autofix zu den zulässigen E-Mail-Mustern für Commit-Autoren hinzufügen.

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.

Screenshot einer Warnung zur Codeüberprüfung mit einer Copilot-Autofix-Ausführung im Fehlerzustand und der Option, die Ausführung erneut zu starten.

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.

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.

Screenshot der Detailansicht einer Code-Scan-Warnung, aus der hervorgeht, dass Copilot festgestellt hat, dass es sich bei der Warnung möglicherweise um ein falsches Positivergebnis handelt, und daher keine Korrektur vorgeschlagen hat; es stehen Optionen zur Verfügung, um den Durchlauf anzuzeigen oder die Korrektur erneut zu versuchen.

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.