Skip to main content

Filtern von Codescanbenachrichtigungen in Pull-Anforderungen

Wenn code scanning ein Problem in einem Pull Request erkennt, kannst du den hervorgehobenen Code überprüfen und die Warnung beheben.

Wer kann dieses Feature verwenden?

Benutzer*innen mit Lesezugriff

Informationen zu code scanning Ergebnissen für Pull-Anforderungen

In Repositorys, in denen code scanning als Pull-Anforderungsprüfung konfiguriert ist, prüft code scanning den Code in der Pull-Anforderung. Standardmäßig ist dies auf Pull-Anforderungen beschränkt, die auf den Standardzweig abzielen, aber du kannst diese Konfiguration in GitHub Actions oder in einem CI/CD-System eines Drittanbieters ändern.

Wenn die in der Pull-Anfrage geänderten Codezeilen code scanning Alerts erzeugen, werden die Alerts an den folgenden Stellen der Pull-Anfrage gemeldet.

  • Prüfen Sie die Ergebnisse in der Pull-Anfrage
  • Die Registerkarte Conversation der Pull-Anfrage als Teil einer Pull-Anfrage-Überprüfung
  • Die Registerkarte Geänderte Dateien des Pull Requests

Hinweis

Code scanning zeigt Alerts in Pull-Anfragen nur dann an, wenn alle vom Alert identifizierten Codezeilen im Pull-Anfrage-Diff vorhanden sind. Weitere Informationen finden Sie unter SARIF-Unterstützung für die Codeüberprüfung.

GitHub Copilot Autofix schlägt Korrekturen für Warnmeldungen aus code scanning Analysen (einschließlich CodeQL Analysen) in privaten Repositories vor. Weitere Informationen zur Arbeit mit Vorschlägen aus Copilot Autofix in Pull-Anfragen finden Sie unter Arbeiten mit Copilot Autofix Vorschlägen für Alerts in einer Pull-Anfrage.

Wenn Sie über eine Schreibberechtigung für das Repository verfügen, können Sie alle vorhandenen code scanning Warnmeldungen auf der Registerkarte Sicherheit einsehen. Informationen über Repository-Alerts finden Sie unter Bewerten von Warnungen der Codeüberprüfung für das Repository.

In Repositorys, in denen die code scanning so konfiguriert ist, dass bei jedem Codepush eine Überprüfung durchgeführt wird, ordnet die code scanning die Ergebnisse auch allen offenen Pull Requests zu und fügt die Warnungen als Anmerkungen an denselben Stellen wie andere Pull Request-Überprüfungen ein. Weitere Informationen finden Sie unter Anpassen des erweiterten Setups für das Codescanning.

Wenn dein Pull Request einen geschützten Branch anzielt, der code scanning verwendet, und der oder die Repositorybesitzer*in erforderliche Statusüberprüfungen konfiguriert hat, muss die Überprüfung „Code scanning-Ergebnisse“ erfolgreich abgeschlossen werden, bevor du den Pull Request mergen kannst. Weitere Informationen finden Sie unter Informationen zu geschützten Branches.

Mit einer GitHub Copilot Enterprise Lizenz können Sie auch GitHub Copilot Gespräch um Hilfe bitten, um code scanning Alerts in Repositories in Ihrer Organisation besser zu verstehen. Weitere Informationen finden Sie unter Fragen zu GitHub Copilot in GitHub.com.

Informationen zu code scanning als Pull-Anforderungsprüfung

Es gibt viele Optionen zum Konfigurieren der code scanning als Pull Request-Überprüfung, daher wird die genaue Konfiguration der einzelnen Repositorys variieren, und einige werden mehrere Überprüfungen aufweisen.

Überprüfung der Code scanning-Ergebnisse

Für alle Konfigurationen von code scanning lautet die Überprüfung, die die Ergebnisse von code scanning enthält: Code scanning-Ergebnisse. Die Ergebnisse für jedes verwendete Analysetool werden separat angezeigt. Alle neuen Alerts zu Codezeilen, die in der Pull-Anfrage geändert wurden, werden als Anmerkungen angezeigt.

Klicke auf Alle Branchwarnungen anzeigen, um alle Warnungen für den analysierten Branch anzuzeigen. Dies öffnet die vollständige Alertansicht, in der Sie alle Alerts des Zweigs nach Typ, Schweregrad, Tag usw. filtern können. Weitere Informationen finden Sie unter Bewerten von Warnungen der Codeüberprüfung für das Repository.

Screenshot: Überprüfung der Code scanning-Ergebnisse für einen Pull Request. Der Link „Alle Branchwarnungen anzeigen“ ist orange umrandet.

Fehler bei der Überprüfung von Code scanning-Ergebnissen

Wenn die code scanning-Ergebnisprüfung Probleme mit einem Schweregrad von error, critical oder high ermittelt, schlägt die Prüfung fehl, und der Fehler wird in den Überprüfungsergebnissen gemeldet. Wenn alle von code scanning gefundenen Ergebnisse einen niedrigeren Schweregrad aufweisen, werden die Benachrichtigungen als Warnungen oder Hinweise behandelt und die Prüfung ist erfolgreich.

Screenshot: Mergefeld für einen Pull Request. Die Überprüfung der „Ergebnisse der Codeüberprüfung / CodeQL“ zeigt die Information „1 neue Warnung, die 1 schwerwiegendes Sicherheitsproblem enthält ...“ an.

Du kannst das Standardverhalten in deinen Repositoryeinstellungen außer Kraft setzen, indem du die Schweregrade sowie Sicherheitsgrade festlegst, die zu einem Fehler bei der Pull Request-Überprüfung führen. Weitere Informationen finden Sie unter Anpassen des erweiterten Setups für das Codescanning.

Andere code scanning Prüfungen

Abhängig von deiner Konfiguration kann es sein, dass bei Pull-Anforderungen mit code scanning zusätzliche Prüfungen laufen. Dies sind in der Regel Workflows, die den Code analysieren oder code scanning-Ergebnisse hochladen. Diese Überprüfungen sind nützlich für die Problembehandlung, wenn Probleme mit der Analyse auftreten.

Wenn das Repository beispielsweise den CodeQL-Analyseworkflow verwendet, wird eine Überprüfung CodeQL / Analyze (SPRACHE) für jede Sprache ausgeführt, bevor die Ergebnisüberprüfung durchgeführt wird. Die Analyseprüfung kann fehlschlagen, wenn es Probleme mit der Konfiguration gibt oder wenn der Pull Request den Build für eine Sprache unterbricht, die die Analyse kompiliert (zum Beispiel C/C++, C#, Go, Java, Kotlin, Rust, und Swift).

Wie bei anderen Pull-Anfrage-Prüfungen können Sie auf der Registerkarte Prüfungen alle Details zum Fehler bei der Prüfung einsehen. Weitere Informationen zum Konfigurieren und zur Problembehandlung finden Sie unter Anpassen des erweiterten Setups für das Codescanning oder Problembehandlung bei der Codeüberprüfung.

Anzeigen einer Warnung auf deiner Pull-Anforderung

Sie können alle code scanning Alerts sehen, die sich innerhalb des Diffs der Änderungen befinden, die in einer Pull-Anfrage eingeführt wurden, indem Sie die Registerkarte Conversation anzeigen. Code scanning veröffentlicht eine Pull-Anfragen-Überprüfung, die jeder Alert als Anmerkung zu den Codezeilen anzeigt, die die Warnung ausgelöst haben. Du kannst die Warnungen kommentieren, diese löschen und auch Pfade für die Warnungen direkt über die Anmerkungen anzeigen. Du kannst die vollständigen Details einer Warnung anzeigen, indem du auf den Link „Weitere Details anzeigen“ klickst, über den du zur Detailseite der Warnung gelangst.

Screenshot: Anmerkung zu einer Warnung auf der Registerkarte „Unterhaltungen“ eines Pull Requests. Der Link „Weitere Details anzeigen“ ist in Dunkelorange umrandet.

Sie können darüber hinaus alle code scanning Alerts, die sich innerhalb des Diffs der in der Pull-Anfrage eingeführten Änderungen befinden, auf der Registerkarte Files changed einsehen.

Wenn Sie in Ihrer Pull-Anfrage eine neue Code-Scan-Konfiguration hinzufügen, wird ein Kommentar zu Ihrer Pull-Anfrage angezeigt, der Sie auf die Registerkarte Sicherheit des Repositorys verweist, damit Sie alle Alerts in der Verzweigung der Pull-Anfrage einsehen können. Weitere Informationen zum Ansehen der Alerts für ein Repository finden Sie unter Erstellen einer Infodatei für ein Unternehmen.

Wenn du über Schreibberechtigungen für das Repository verfügst, enthalten einige Anmerkungen Links mit zusätzlichem Kontext für die Warnung. Im obigen Beispiel aus der CodeQL Analyse kannst du auf den vom Benutzer bereitgestellten Wert klicken, um zu sehen, wo die nicht vertrauenswürdigen Daten in den Datenfluss gelangen (dies wird als Quelle bezeichnet). In diesem Fall kannst du auch den vollständigen Pfad von der Quelle zu dem Code anzeigen, der die Daten (die Senke) verwendet, indem du auf Pfade anzeigen klickst. So lässt sich leicht überprüfen, ob die Daten nicht vertrauenswürdig sind oder ob die Analyse einen Datenbereinigungsschritt zwischen der Quelle und der Senke nicht erkannt hat. Weitere Informationen zum Analysieren des Datenflusses unter Verewndung von CodeQL finden Sie unter Über die Datenflussanalyse.

Um weitere Informationen zu einer Warnung anzuzeigen, können Benutzer mit Schreibberechtigung auf den Link Weitere Details anzeigen klicken, der in der Anmerkung angezeigt wird. Auf diese Weise kannst du alle Kontext- und Metadaten anzeigen, die vom Tool in einer Warnungsansicht bereitgestellt werden. Im folgenden Beispiel kannst du Tags sehen, die den Schweregrad, den Typ und die relevanten allgemeinen Schwächeaufzählungen (CWEs) für das Problem anzeigen. Die Ansicht zeigt auch, welche Commit das Problem eingeführt hat.

Der Status und die Details auf der Warnungsseite spiegeln nur den Status der Warnung für den Standardbranch des Repositorys wider, auch wenn die Warnung in anderen Branches vorhanden ist. Du kannst den Status der Warnung für nicht standardmäßigen Branches im Abschnitt Betroffene Branches rechts auf der Warnungsseite sehen. Wenn eine Warnung im Standardbranch nicht vorhanden ist, wird der Status der Warnung als „in Pull Request“ oder „in Branch“ in grau angezeigt. Im Abschnitt Development werden verknüpfte Branches und Pull Requests angezeigt, die die Warnung beheben.

In der Detailansicht einer Warnung enthalten einige code scanning Tools, wie z.B. CodeQL-Analyse, auch eine Beschreibung des Problems und einen Link Mehr anzeigen, der Dir zeigt, wie du deinen Code beheben kannst.

Screenshot mit der Beschreibung für eine code scanning-Warnung. Der Link „Mehr anzeigen“ ist orange umrandet.

Kommentieren einer Warnung in einem Pull Request

Sie können jede code scanning Meldung kommentieren, die in einer Pull-Anfrage erscheint. Alerts erscheinen als Anmerkungen auf der Registerkarte Conversation einer Pull-Anfrage als Teil einer Pull-Anfrage-Überprüfung und werden auch auf der Registerkarte Files changed angezeigt.

Du kannst auswählen, dass alle Unterhaltungen in einem Pull Request erforderlich sind, einschließlich derer zu code scanning-Warnungen, die aufgelöst werden sollen, bevor ein Pull Request zusammengeführt werden kann. Weitere Informationen finden Sie unter Informationen zu geschützten Branches.

Beheben einer Warnung auf deiner Pull-Anforderung

Jeder, der Push-Zugriff auf eine Pull-Anforderung hat, kann eine code scanning Warnung beheben, die in dieser Pull-Anforderung enthalten ist. Wenn du Änderungen an der Pull-Anforderung vornimmst, löst dies einen neuen Durchlauf der Pull-Anforderungsprüfung aus. Wenn deine Änderungen das Problem beheben, wird die Meldung geschlossen und der Vermerk entfernt.

Arbeiten mit Copilot Autofix Vorschlägen für Alerts bei einer Pull-Anfrage

GitHub Copilot Autofix ist eine Erweiterung von code scanning, die Ihnen gezielte Empfehlungen zur Behebung von code scanning Alerts (einschließlich CodeQL Alerts) in Pull-Anfragen gibt. Die potenziellen Korrekturen werden automatisch von großen Sprachmodellen (LLMs) anhand von Daten aus der Codebasis, der Pull-Anfrage und der code scanning Analyse generiert.

Hinweis

Du benötigst kein Abonnement für GitHub Copilot, um GitHub Copilot Autofix zu verwenden. Copilot Autofix ist in allen öffentlichen Repositorys auf GitHub.com sowie in internen und privaten Repositorys im Besitz von Organisationen und Unternehmen verfügbar, die über eine Lizenz für GitHub Code Security verfügen.

Screenshot der Fehlerwarnung bei der Codeüberprüfung code scanning in einem Pull Request. Ein Teil des „autofix“-Vorschlags wird in Dunkelorange umrandet.

Generierung von Copilot Autofix Vorschlägen und Veröffentlichung in einer Pull-Anfrage

Wenn Copilot Autofix für ein Repository aktiviert ist, werden Alerts wie üblich in Pull-Anfragen angezeigt und Informationen aus Alerts, die durch code scanning gefunden wurden, automatisch zur Verarbeitung an den LLM gesendet. Wenn die LLM-Analyse abgeschlossen ist, werden alle Ergebnisse als Kommentare zu relevanten Warnungen veröffentlicht. Weitere Informationen finden Sie unter Verantwortungsbewusste Nutzung von Copilot Autofix für das Scannen von Code.

Hinweis

  • Copilot Autofix unterstützt eine Teilmenge der CodeQL Abfragen. Informationen über die Verfügbarkeit von Copilot Autofix finden Sie in den Abfragetabellen, die von Abfragen für die CodeQL-Analyse verlinkt sind.
  • Wenn die Analyse abgeschlossen ist, werden alle relevanten Ergebnisse gleichzeitig in dem Pull Request veröffentlicht. Wenn mindestens ein Alert in Ihrer Pull-Anfrage einen Copilot Autofix Vorschlag enthält, sollten Sie davon ausgehen, dass der LLM die Identifizierung möglicher Korrekturen für Ihren Code abgeschlossen hat.
  • Bei Alerts, die aus Abfragen generiert werden, die nicht von Copilot Autofix unterstützt werden, erhalten Sie einen Hinweis, dass die Abfrage nicht unterstützt wird. Wenn für eine unterstützte Abfrage kein Vorschlag generiert werden kann, wird in der Warnung ein Hinweis angezeigt. Darin werden Sie aufgefordert, einen anderen Commit zu senden oder sich an den Support zu wenden.
  • Copilot Autofix für code scanning-Warnungen kann nicht in jeder Situation einen Fix für jede Warnung generieren. Das Feature funktioniert auf Best-Effort-Basis und ist nicht garantiert, 100% der Zeit erfolgreich zu sein. Informationen zu den Einschränkungen bei automatisch generierten Korrekturen findest du unter Einschränkungen bei Vorschlägen.

Wenn Sie in der Regel Änderungen an einem Pull Request vorschlagen, enthält ihr Kommentar Änderungen für eine einzelne Datei, die in dem Pull Request geändert wird. Auf dem folgenden Screenshot ist ein Copilot Autofix Kommentar zu sehen, der Änderungen an der Datei index.js vorschlägt, in der der Alert angezeigt wird. Da der potenzielle Fix eine neue Abhängigkeit von escape-html erfordert, schlägt der Kommentar auch vor, diese Abhängigkeit zur package.json-Datei hinzuzufügen, obwohl der ursprüngliche Pull Request keine Änderungen an dieser Datei vornimmt.

Screenshot des Copilot Autofix Vorschlags zur Bearbeitung der aktuellen Datei. Eine vorgeschlagene Änderung in "package.json" wird in Dunkelorange umrandet.

Bewerten und Übertragen eines Copilot Autofix Vorschlags

Jeder Copilot Autofix Vorschlag demonstriert eine mögliche Lösung für einen code scanning Alert in Ihrer Codebasis. Sie müssen die vorgeschlagenen Änderungen bewerten, um festzustellen, ob sie eine gute Lösung für Ihre Codebasis sind, und um sicherzustellen, dass sie das beabsichtigte Verhalten beibehalten. Informationen zu den Einschränkungen von Copilot Autofix Vorschlägen finden Sie unter Einschränkungen von Vorschlägen und Abschwächen der Einschränkungen von Vorschlägen in "Verantwortungsvolle Verwendung von Copilot Autofix für code scanning"

  1. Klicken Sie auf Bearbeiten, um die Bearbeitungsoptionen anzuzeigen, und wählen Sie Ihre bevorzugte Methode aus.
    • Unter Bearbeiten mit GitHub CLI folgen Sie den Anweisungen, um die Pull-Anfrage lokal auszuchecken und die vorgeschlagene Korrektur anzuwenden.
    • Wählen Sie FILENAME bearbeiten, um die Datei direkt auf GitHub zu bearbeiten und die vorgeschlagene Korrektur anzuwenden.
  2. Wenn du es optional bevorzugst, den Fix auf ein lokales Repository oder einen lokalen Branch anzuwenden, wähle im Vorschlag das Dropdownmenü aus.
    • Wählen Sie Autofix-Patch anzeigen aus, um Anweisungen zum Anwenden der vorgeschlagenen Korrektur auf ein lokales Repository oder einen Branch anzuzeigen.
    • Wählen Sie Geänderte Zeile LINE_NUMBER kopieren um eine bestimmte Zeile des Vorschlags zu kopieren.
  3. Testen und ändern Sie die vorgeschlagene Korrektur nach Bedarf.
  4. Wenn Sie Ihre Änderungen getestet haben, übernehmen Sie den Commit für die Änderungen und übertragen Sie sie an Ihre Verzweigung.
  5. Durch das Pushen der Änderungen an Ihre Verzweigung werden alle üblichen Tests für Ihren Pull Request ausgelöst. Vergewissern Sie sich, dass die Komponententests weiterhin bestehen und dass die code scanning-Warnung jetzt behoben ist.

Ablehnen eines Copilot Autofix Vorschlags

Wenn Sie entscheiden, einen Copilot Autofix Vorschlag abzulehnen, klicken Sie im Kommentar auf Vorschlag verwerfen, um den Korrekturvorschlag zu verwerfen.

Verwerfen einer Warnung auf deiner Pull-Anforderung

Eine andere Möglichkeit, eine Meldung zu schließen, ist, sie zu verwerfen. Du kannst eine Meldung verwerfen, wenn du der Meinung bist, dass sie nicht behoben werden muss. Beispielsweise liegt ein Fehler in Code vor, der nur zum Testen verwendet wird, oder der Aufwand zum Beheben des Fehlers ist höher als der potenzielle Vorteil der Verbesserung des Codes. Wenn du über eine Schreibberechtigung für das Repository verfügst, ist die Schaltfläche Warnung schließen in den Codeanmerkungen und in der Zusammenfassung der Warnungen verfügbar. Wenn du auf Warnung schließen klickst, wirst du aufgefordert, einen Grund für das Verwerfen der Warnung auszuwählen.

Screenshot einer fehlgeschlagenen Prüfung beim Scannen von Codes. Die Schaltfläche „Warnung schließen“ ist Dunkelorange umrandet. Es wird das Dropdownmenü „Warnung schließen“ angezeigt.

Es ist wichtig, den entsprechenden Grund aus dem Dropdownmenü auszuwählen, weil sich dies darauf auswirken kann, ob eine Abfrage weiterhin in zukünftigen Analysen berücksichtigt wird. Optional können Sie die Zurückweisung kommentieren, um den Kontext der Zurückweisung einer Warnung aufzuzeichnen. Der Kommentar zur Zurückweisung wird zur Zeitleiste der Warnung hinzugefügt und kann bei Prüfungen und Berichterstellungen als Begründung verwendet werden. Du kannst einen Kommentar über die REST-API für die Codeüberprüfung abrufen oder festlegen. Der Kommentar ist in dismissed_comment für den Endpunkt alerts/{alert_number} enthalten. Weitere Informationen finden Sie unter REST-API-Endpunkte für die Codeüberprüfung.

Wenn du eine CodeQL-Warnung als False Positive-Ergebnis schließt, z. B. weil der Code eine nicht unterstützte Bereinigungsbibliothek verwendet, solltest du zum CodeQL-Repository beitragen und die Analyse verbessern. Weitere Informationen zu CodeQL findest du unter Beitragen zu CodeQL.

Weitere Informationen zum Schließen von Warnungen sind unter Problemlösung für Warnungen der Codeüberprüfung verfügbar.