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?

If you have read permission for a repository, you can see annotations on pull requests. With write permission, you can see detailed information and resolve code scanning alerts for that repository.

Code scanning ist für alle öffentlichen Repositorys auf GitHub.com verfügbar. Code scanning ist auch für private organisationseigene Repositorys verfügbar, die GitHub Enterprise Cloud nutzen und im Besitz einer Lizenz für GitHub Advanced Security sind. Weitere Informationen findest du unter Informationen zu GitHub Advanced Security.

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 im Pull Request geänderten Codezeilen code scanning-Warnungen generieren, werden die Warnungen an den folgenden Stellen im Pull Request angezeigt.

  • Ergebnisse im Pull Request überprüfen
  • Die Registerkarte Unterhaltung des Pull Requests als Teil einer Pull Request-Überprüfung
  • Die Registerkarte Geänderte Dateien des Pull Requests

Wenn du Schreibberechtigung für das Repository hast, kannst du alle vorhandenen code scanning-Warnungen auf der Registerkarte Sicherheit anzeigen. Informationen zu Repository-Warnungen findest du unter Verwalten von Codescanwarnungen für dein 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 findest du unter Anpassen des erweiterten Setups für Codeüberprüfung.

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 findest du unter Informationen zu geschützten Branches.

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 Warnungen in Codezeilen, die im Pull Request geändert wurden, werden als Anmerkungen angezeigt.

Klicke auf Alle Branchwarnungen anzeigen, um alle Warnungen für den analysierten Branch anzuzeigen. Dadurch wird die vollständige Warnungsansicht geöffnet, in der du alle Warnungen im Branch nach Typ, Schweregrad, Tag usw. filtern kannst. Weitere Informationen findest unter Verwalten von Codescanwarnungen für dein 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. Neben der Überprüfung „Ergebnisse der Codeüberprüfung / CodeQL“ wird die Information „1 neue Warnung, die 1 schwerwiegendes Sicherheitsproblem enthält ...“ angezeigt.

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 findest du unter Anpassen des erweiterten Setups für Codeüberprüfung.

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 die Pull-Anforderung den Build für eine Sprache unterbricht, die für die Analyse kompiliert werden muss (zum Beispiel C/C++, C# oder Java).

Wie bei anderen Pull Request-Überprüfungen kannst du auf der Registerkarte Überprüfungen alle Details zum Überprüfungsfehler einsehen. Weitere Informationen zur Konfiguration und zur Problembehandlung findest du unter Anpassen des erweiterten Setups für Codeüberprüfung oder Problembehandlung bei der Codeüberprüfung.

Anzeigen einer Warnung auf deiner Pull-Anforderung

Du kannst alle code scanning-Warnungen im Diff für Änderungen anzeigen, die durch einen Pull Request verursacht wurden, indem du die Registerkarte Unterhaltung auswählst. Code scanning postet einen Pull-Request-Review, der jede Warnung als Anmerkung für die Codezeilen darstellt, 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 orange umrandet.

Du kannst auch alle code scanning-Warnungen im Diff für Änderungen anzeigen, die durch den Pull Request eingeführt wurden, indem du die Registerkarte Geänderte Dateien auswählst.

Wenn du deinem Pull Request eine neue Codeüberprüfungskonfiguration hinzufügst, wird ein Kommentar zu deinem Pull Request angezeigt. Dieser leitet dich zur Registerkarte Sicherheit des Repositorys, damit du alle Warnungen im Pull-Request-Branch anzeigen kannst. Weitere Informationen zum Anzeigen der Warnungen für ein Repository findest du unter Verwalten von Codescanwarnungen für dein Repository.

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. Informationen zum Analysieren des Datenflusses mithilfe von CodeQL findest du unter „Informationen zur 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.

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

Du kannst alle code scanning-Warnungen kommentieren , die in einem Pull Request angezeigt werden. Warnungen werden als Anmerkungen auf der Registerkarte Unterhaltung eines Pull Requests als Teil eines Pull-Request-Reviews und auch auf der Registerkarte Geänderte Dateien 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 findest du 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.

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: Fehlerwarnung bei der Codeüberprüfung in einem Pull Request. Die Schaltfläche „Warnung schließen“ im Überprüfungsfehler ist orange 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 kannst du eine 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 „Verwalten von Codescanwarnungen für dein Repository“ zu finden.