Skip to main content

Triage des alertes d’analyse du code dans les demandes de tirage (pull request)

Quand l’code scanning identifie un problème dans une demande de tirage, vous pouvez passer en revue le code mis en surbrillance et résoudre l’alerte.

Qui peut utiliser cette fonctionnalité ?

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 est disponible pour tous les dépôts publics sur GitHub.com. Pour utiliser code scanning dans un dépôt privé appartenant à une organisation, vous devez avoir une licence pour GitHub Advanced Security. Pour plus d’informations, consultez « À propos de GitHub Advanced Security ».

À propos des résultats d’code scanning sur les demandes de tirage

Dans les dépôts où l’code scanning est configurée en tant que vérification de demande de tirage, l’code scanning vérifie le code dans la demande de tirage. Par défaut, cela est limité aux demandes de tirage qui ciblent la branche par défaut, mais vous pouvez changer cette configuration dans GitHub Actions ou dans un système CI/CD tiers.

Si les lignes de code modifiées dans la demande de tirage génèrent des alertes d’code scanning, les alertes sont signalées aux emplacements suivants dans la demande de tirage.

  • Vérifier les résultats dans l’ de la demande de tirage
  • L’onglet Conversation de la demande de tirage, dans le cadre d’une révision de demande de tirage
  • L’onglet Fichiers modifiés de la demande de tirage

Remarque : Code scanning affiche les alertes dans les demandes d'extraction uniquement lorsque toutes les lignes de code identifiées par l’alerte existent dans un diff de demande de tirage. Pour plus d’informations, consultez « Prise en charge de SARIF pour l’analyse du code ».

Si vous disposez d’une autorisation d’écriture pour le dépôt, vous pouvez voir les alertes d’code scanning existantes sous l’onglet Sécurité. Pour plus d’informations sur les alertes de dépôt, consultez « Gestion des alertes d’analyse du code pour votre référentiel ».

Dans les dépôts où l’code scanning est configurée pour effectuer une analyse chaque fois que du code est poussé, l’code scanning mappe également les résultats aux demandes de tirage ouvertes et ajoute les alertes sous forme d’annotations dans les mêmes emplacements que les autres vérifications de demande de tirage. Pour plus d’informations, consultez « Personnalisation de votre configuration avancée pour l’analyse de code ».

Si votre demande de tirage cible une branche protégée qui utilise l’code scanning et que le propriétaire du dépôt a configuré les vérifications d’état requises, la vérification « Résultats de l’Code scanning » doit réussir pour que vous puissiez fusionner la demande de tirage. Pour plus d’informations, consultez « À propos des branches protégées ».

À propos de l’code scanning en tant que vérification de demande de tirage

Comme il existe de nombreuses options pour configurer l’code scanning en tant que vérification de demande de tirage, la nature des vérifications et leur nombre peuvent varier d’un référentiel à l’autre.

Vérification des résultats de l’Code scanning

Pour toutes les configurations d’code scanning, la vérification qui contient les résultats d’code scanning est : Résultats de l’Code scanning . Les résultats de chaque outil d’analyse utilisé sont affichés séparément. Toutes les nouvelles alertes sur les lignes de code modifiées dans la demande de tirage sont affichées sous forme d’annotations.

Pour voir l’ensemble complet des alertes de la branche analysée, cliquez sur Voir toutes les alertes de branche. Cette action ouvre l’affichage complet des alertes, dans lequel vous pouvez filtrer toutes les alertes sur la branche par type, gravité, étiquette, etc. Pour plus d’informations, consultez « Gestion des alertes d’analyse du code pour votre référentiel ».

Capture d’écran de la vérification des résultats de l’Code scanning sur une demande de tirage. Le lien « Voir toutes les alertes de branche » est mis en évidence avec un encadré orange foncé.

Échecs de la vérification des résultats de l’Code scanning

Si la vérification des résultats d’code scanning détecte des problèmes de gravité de type error, critical ou high, la vérification échoue et l’erreur est signalée dans les résultats de la vérification. Si tous les résultats trouvés par l’code scanning ont des gravités inférieures, les alertes sont traitées comme des avertissements ou des remarques et la vérification réussit.

Capture d’écran de la zone de fusion d’une demande de tirage. La vérification « Résultats d’analyse du code / CodeQL » contient « 1 nouvelle alerte, dont 1 valeur de sécurité de gravité élevée… »

Vous pouvez remplacer le comportement par défaut dans les paramètres de votre référentiel, en spécifiant le niveau des gravités et les gravités de sécurité qui provoqueront l’échec de la vérification d’une demande de tirage. Pour plus d’informations, consultez « Personnalisation de votre configuration avancée pour l’analyse de code ».

Autres vérifications d’code scanning

Selon votre configuration, vous pouvez voir des vérifications supplémentaires qui s’exécutent sur les demandes de tirage quand l’code scanning est configurée. Il s’agit généralement de workflows qui analysent le code ou qui chargent les résultats d’code scanning. Ces vérifications sont utiles pour résoudre les problèmes liés à l’analyse.

Par exemple, si le dépôt utilise le Workflow d’analyse CodeQL, une vérification CodeQL / Analyser (LANGAGE) est exécutée pour chaque langage avant l’exécution de la vérification des résultats. La vérification de l’analyse peut échouer en cas de problèmes de configuration ou si la demande de tirage interrompt la génération pour un langage que l’analyse compile (par exemple, C/C++, C#, Go, Java et Swift).

Comme avec les autres vérifications de demande de tirage, vous pouvez voir les détails complets de l’échec de la vérification sous l’onglet Vérifications. Pour plus d’informations sur la configuration et la résolution des problèmes, consultez « Personnalisation de votre configuration avancée pour l’analyse de code » ou « Résolution des problèmes d’analyse du code ».

Affichage d’une alerte sur votre demande de tirage

Vous pouvez voir toutes les alertes d’code scanning qui sont dans le diff des modificationsintroduites dans une demande de tirage en consultant l’onglet Conversation. L’Code scanning publie une révision de la demande de tirage qui montre chaque alerte sous forme d’annotation sur les lignes de code qui ont déclenché l’alerte. Vous pouvez commenter les alertes, les rejeter et visualiser les chemins pour les alertes, directement à partir des annotations. Vous pouvez consulter tous les détails d’une alerte en cliquant sur le lien « Afficher plus de détails », qui vous mènera à la page des détails de l’alerte.

Capture d’écran d’une annotation d’alerte sous l’onglet Conversations d’une demande de tirage. Le lien Afficher plus de détails est mis en évidence en orange foncé.

Vous pouvez également voir toutes les alertes d’code scanning qui sont dans le diff des modifications introduites dans la demande de tirage sous l’onglet Fichiers modifiés .

Si vous ajoutez une nouvelle configuration d’analyse du code dans votre demande de tirage, vous verrez un commentaire sur votre demande de tirage vous dirigeant vers l’onglet Sécurité du dépôt afin de pouvoir afficher toutes les alertes sur la branche de demande de tirage. Pour plus d’informations sur l’affichage des alertes d’un dépôt, consultez « Gestion des alertes d’analyse du code pour votre référentiel ».

Si vous disposez d’une autorisation d’écriture pour le dépôt, certaines annotations contiennent des liens avec un contexte supplémentaire pour l’alerte. Dans l’exemple ci-dessus, à partir de l’analyse CodeQL, vous pouvez cliquer sur valeur fournie par l’utilisateur pour voir où les données non approuvées entrent dans le flux de données (la source). Dans ce cas, vous pouvez également afficher le chemin complet depuis la source vers le code qui utilise les données (le récepteur) en cliquant sur Afficher les chemins. Cela permet de vérifier facilement si les données ne sont pas approuvées ou si l’analyse n’a pas pu reconnaître une étape d’assainissement des données entre la source et le récepteur. Pour plus d’informations sur l’analyse du flux de données avec CodeQL, consultez « À propos de l’analyse du flux de données ».

Pour plus d’informations sur une alerte, les utilisateurs disposant d’une autorisation d’écriture peuvent cliquer sur le lien Afficher plus de détails affiché dans l’annotation. Cela vous permet de voir tout le contexte et les métadonnées fournis par l’outil dans un affichage d’alerte. Dans l’exemple ci-dessous, vous pouvez voir les étiquettes montrant la gravité, le type et les énumérations des faiblesses courantes pertinentes pour le problème. L’affichage montre également quel commit a introduit le problème.

L’état et les détails présentés sur la page de l’alerte reflètent uniquement l’état de l’alerte sur la branche par défaut du référentiel, même si l’alerte existe sur d’autres branches. Vous pouvez consulter l’état de l’alerte sur les branches autres que la branche par défaut dans la section Branches affectées sur le côté droit de la page de l’alerte. Si une alerte n’existe pas sur la branche par défaut, l’état de l’alerte est « dans la demande de tirage » ou « dans la branche », et il est grisé.

Dans l’affichage détaillé d’une alerte, certains outils d’code scanning , tels que l’analyse CodeQL, incluent également une description du problème et un lien Afficher plus qui vous permet d’obtenir des conseils sur la résolution de votre code.

Capture d’écran montrant la description d’une alerte code scanning. Un lien intitulé « Afficher plus » est mis en évidence avec un encadré orange foncé.

Commenter une alerte dans une demande de tirage

Vous pouvez commenter toute alerte d’code scanning qui apparaît dans une demande de tirage. Les alertes apparaissent sous forme d’annotations sous l’onglet Conversation d’une demande de tirage, dans le cadre d’une révision de demande de tirage, et sont également affichées sous l’onglet Fichiers modifiés.

Vous pouvez choisir d’exiger que toutes les conversations dans une demande de tirage, y compris celles sur les alertes d’code scanning, soient résolues avant qu’une demande de tirage puisse être fusionnée. Pour plus d’informations, consultez « À propos des branches protégées ».

Résolution d’une alerte sur votre demande de tirage

Toute personne disposant d’un accès en poussée à une demande de tirage peut résoudre une alerte d’code scanning identifiée sur cette demande de tirage. Si vous commitez des modifications apportées à la demande de tirage, une nouvelle exécution des vérifications de la demande de tirage est déclenchée. Si vos modifications résolvent le problème, l’alerte est fermée et l’annotation supprimée.

Utilisation des suggestions de correction automatique pour les alertes

Note

La correction automatique de GitHub pour code scanning est en phase bêta. Les fonctionnalités et la documentation sont sujettes à modification. Au cours de cette phase, la fonctionnalité est limitée aux alertes C#, C/C++, Go, Java/Kotlin, JavaScript/TypeScript, Python et Ruby identifiées par CodeQL pour les référentiels privés et internes. Si vous avez un compte d’entreprise et que vous utilisez GitHub Advanced Security, votre entreprise a accès à la version bêta.

La correction automatique, basée sur GitHub Copilot, est une extension de l’code scanning qui vous fournit des recommandations ciblées pour vous aider à corriger les alertes d’code scanning dans les demandes de tirage. Les correctifs potentiels sont générés automatiquement par de grands modèles de langage (LLM) sur la base de données provenant du codebase, de la demande de tirage et de l’analyse CodeQL.

Capture d’écran de l’échec de la vérification d’une alerte code scanning dans une demande de tirage. Une partie de la suggestion de « correction automatique » est mise en évidence en orange foncé.

Génération de suggestions de correction automatique et publication dans une demande de tirage

Lorsque la correction automatique est activée pour un référentiel, les alertes sont affichées dans les demandes de tirage comme à l’habitude et les informations de toutes les alertes trouvées par CodeQL sont automatiquement envoyées au LLM pour traitement. Une fois l’analyse LLM terminée, tous les résultats sont publiés en tant que commentaires sur les alertes pertinentes. Pour plus d’informations, consultez « À propos de la correction automatique de l’analyse du code CodeQL ».

Remarques :

  • La correction automatique prend en charge un sous-ensemble de demandes CodeQL. Pour plus d’informations sur la disponibilité de la correction automatique, consultez les tables de requête liées à partir de « Suites de requêtes CodeQL ».
  • Une fois l’analyse terminée, tous les résultats pertinents sont publiés en même temps sur la demande de tirage. Si au moins une alerte dans votre demande de tirage présente une suggestion de correction automatique, vous devez supposer que le LLM a terminé d’identifier les correctifs potentiels pour votre code.

En règle générale, lorsque vous suggérez des modifications pour une demande de tirage, votre commentaire contient des modifications pour un seul fichier modifié dans la demande de tirage. La capture d’écran suivante montre un commentaire de correction automatique qui suggère des modifications pour le fichier index.js dans lequel l’alerte s’affiche. Étant donné que le correctif potentiel nécessite une nouvelle dépendance sur escape-html, le commentaire suggère également d’ajouter cette dépendance au fichier package.json, même si la demande de tirage d’origine n’apporte aucune modification à ce fichier.

Capture d’écran de la suggestion de correction automatique avec explication et modification dans le fichier actif. Un changement suggéré dans « package.json » est mis en évidence en orange foncé.

Évaluation et validation d’une suggestion de correction automatique

Chaque suggestion de correction automatique illustre une solution potentielle pour une alerte code scanning dans votre codebase. Vous devez évaluer les modifications suggérées pour déterminer si elles constituent une solution appropriée pour votre codebase et pour vous assurer qu’elles conservent le comportement prévu. Pour plus d’informations sur les limites des suggestions de correction automatique, consultez « Limites des suggestions de correction automatique » et « Atténuation des limites des suggestions de correction automatique » dans « À propos de la correction automatique pour CodeQL code scanning ».

  1. Cliquez sur Modifier pour afficher les options de modification et sélectionnez la méthode que vous préférez.
    • Sélectionnez Modifier avec des codespaces pour ouvrir un codespace montrant votre branche avec le correctif suggéré appliqué.
    • Sélectionnez Modifier localement avec GitHub CLI pour afficher des instructions sur l’application du correctif suggéré à une branche ou un référentiel locaux quelconques.
  2. Testez et modifiez le correctif suggéré si nécessaire.
  3. Une fois que vous avez terminé de tester vos modifications, commitez-les et envoyez-les à votre branche.
  4. L’envoi (push) des modifications à votre branche déclenche tous les tests habituels pour votre demande de tirage. Vérifiez que vos tests unitaires réussissent toujours et que l’alerte code scanning est maintenant corrigée.

Masquage d’une suggestion de correction automatique

Si vous décidez de rejeter une suggestion de correction automatique, cliquez sur Ignorer la suggestion dans le commentaire pour ignorer le correctif suggéré.

Ignorer une alerte sur votre demande de tirage

Une autre façon de fermer une alerte consiste à l’ignorer. Vous pouvez ignorer une alerte si vous ne pensez pas qu’elle doit être résolue. Par exemple, dans le cas d’une erreur présente dans du code utilisé uniquement à des fins de test, ou quand l’effort de correction de l’erreur est supérieur à l’avantage potentiel que représente l’amélioration du code. Si vous disposez d’une autorisation d’écriture pour le dépôt, un bouton Ignorer l’alerte est disponible dans les annotations de code et dans le résumé des alertes. Quand vous cliquez sur Ignorer l’alerte, vous êtes invité à choisir une raison de fermer l’alerte.

Capture d’écran de l’échec d’une vérification d’une analyse du code. Le bouton Ignorer l’alerte est mis en évidence en orange foncé. La liste déroulante Ignorer l’alerte s’affiche. Il est important de choisir le motif approprié dans le menu déroulant, car cela peut avoir une incidence sur l’inclusion ou non d’une requête dans une analyse future. Si vous le souhaitez, vous pouvez commenter un licenciement pour enregistrer le contexte d’un licenciement d’alerte. Le commentaire sur le licenciement est ajouté à la chronologie des alertes et peut être utilisé comme justification lors de l’audit et de la création de rapports. Vous pouvez récupérer ou définir un commentaire à l’aide de l’API REST d’analyse du code. Le commentaire est contenu dans dismissed_comment pour le point de terminaison alerts/{alert_number}. Pour plus d’informations, consultez « Points de terminaison d’API REST pour l’analyse de codes ».

Si vous ignorez une alerte CodeQL que vous considérez comme un résultat faux positif, par exemple parce que le code utilise une bibliothèque d’assainissement qui n’est pas prise en charge, envisagez de contribuer au dépôt CodeQL et d’améliorer l’analyse. Pour plus d’informations sur CodeQL, consultez « Contribution à CodeQL ».

Pour plus d’informations sur la suppression des alertes, consultez « Gestion des alertes d’analyse du code pour votre référentiel ».