Skip to main content

Apprendre à déboguer avec GitHub Copilot

Identifiez et corrigez les erreurs dans votre code en demandant de l'aide à GitHub Copilot.

La recherche et la résolution des bogues dans le code peuvent être frustrantes, en particulier lorsque vous êtes un nouveau développeur. Heureusement, des outils comme GitHub Copilot permettent d'identifier et d'éliminer rapidement les bogues, ce qui vous permet de vous concentrer sur un travail plus créatif et plus intéressant.

Prérequis

Les exemples de cet article supposent que vous utilisez GitHub Copilot pour déboguer un projet Python dans Visual Studio Code. (VS Code). Pour suivre les exemples, vous devez :

Apprendre à déboguer à l'aide d'exemples

Il y a deux situations principales que vous rencontrerez lorsque vous essaierez d'exécuter un code bogué :

  • Votre code s’arrête avant qu’il ne s’exécute, et vous recevez un message d’erreur.
  • Votre code s’exécute sans erreur, mais la sortie est différente de ce que vous attendiez.

Heureusement, Copilot peut vous aider à déboguer votre code dans les deux cas. Pour commencer, passez en revue les exemples suivants.

Débogage d'une erreur avec GitHub Copilot

Lorsque vous exécutez un code bogué, vous recevez souvent un message d'erreur. Le message vous indique le fichier et la ligne où l’erreur s’est produite et décrit brièvement ce qui s’est passé. Toutefois, les messages d’erreur peuvent être déroutants. Pour bien comprendre et corriger le problème, nous pouvons demander de l'aide à Copilot.

Essayons de le faire avec le bugged_dice_battle.py dans le fichier new2code/debug-with-copilot référentiel. Ce programme simule une bataille de dés entre deux joueurs à l’aide du code suivant :

# Import the random module to easily generate pseudo-random numbers
import random

# Define a function that simulates a dice battle between two players
def dice_battle():

    # Generate random numbers between 1 and 6 for each player's die roll
    die_1 = random.randint(1, 6)
    die_2 = random.randint(1, 6)

    # Compare the die rolls and return the result as a string
    if die_1 > die_2:
        return "Player 1 rolled a " + die_1 + " and Player 2 rolled a " + die_2 + ". Player 1 wins!"
    elif die_1 < die_2:
        return "Player 1 rolled a " + die_1 + " and Player 2 rolled a " + die_2 + ". Player 2 wins!"
    else:
        return "Player 1 rolled a " + die_1 + " and Player 2 rolled a " + die_2 + ". It's a tie!"

print(dice_battle())

Tout d'abord, nous devons cloner le dépôt localement :

  1. Dans VS Code, ouvrez la palette de commandes en appuyant sur Cmd+Shift+P (Mac) or Ctrl+Shift+P (Windows/Linux).

  2. Tapez Git: Clone, puis appuyez sur Entrée.

  3. Collez l'URL du new2code/debug-with-copilot référentiel:

    Text
    https://github.com/new2code/debug-with-copilot
    
  4. Appuyez sur Entrer, puis choisissez un emplacement pour enregistrer le référentiel sur votre ordinateur.

  5. Lorsque vous y êtes invité, ouvrez le référentiel dans VS Code.

Maintenant que nous avons cloné le référentiel, exécutons bugged_dice_battle.py pour voir le résultat :

  1. Ouvrez la palette de commandes en appuyant sur Cmd+Maj+P (Mac) ou Ctrl+Maj+P (Windows/Linux).

  2. Tapez Terminal: Create New Terminal, puis appuyez sur Entrée.

  3. Si vous utilisez Mac ou Linux, dans l’onglet terminal, collez le code suivant :

    Shell
    python bugged_dice_battle.py
    

    Sinon, si vous utilisez Windows, collez le code suivant :

    Shell
    py bugged_dice_battle.py
    
  4. Appuyez sur la touche Entrée pour exécuter le programme.

Malheureusement, nous obtenons un texte d'erreur dans notre terminal qui se termine par le message suivant : TypeError: can only concatenate str (not "int") to str. Pour comprendre ce que cela signifie, appuyez sur Commande+Maj+I (Mac) ou Ctrl+Alt+I (Windows/Linux) pour ouvrir Copilot Chat, collez et envoyez l’invite suivante :

Text
Explain in depth why my code produces the following error and how I can fix it:

TypeError: can only concatenate str (not "int") to str

Copilot répondra que l'erreur se produit parce que nous essayons de concaténer les entiers. die_1 et die_2 à des chaînes, et vous ne pouvez concaténer que des chaînes à des chaînes. Il fournira ensuite une version mise à jour de notre code qui corrige le bogue à l’aide de la fonction str() pour convertir les entiers en chaînes avant de les concaténer.

Débogage d'une sortie incorrecte avec GitHub Copilot

Parfois, le code en attente s’exécute sans générer d’erreurs, mais la sortie est clairement incorrecte. Dans ce cas, le débogage peut être plus difficile car VS Code ne peut pas vous indiquer l'emplacement ou la description du bogue.

Pour ces bogues « invisibles », Copilot est particulièrement utile. Faisons l'expérience pratique de l'utilisation du bugged_factorial_finder.py fichier dans le new2code/debug-with-copilot référentiel. Le programme Python est censé calculer un facteur et contient le code suivant :

# Initialize the factorial result to 1
factorial = 1

# Initialize the input number to 6
number = 6

# Loop from 1 to number (inclusive) and multiply factorial by each number
for i in range(1, number + 1):
    factorial *= factorial * i

print(f"The factorial of {number} is {factorial}")

Maintenant que nous avons cloné le référentiel, exécutons bugged_factorial_finder.py pour voir le résultat :

  1. Dans VS Code, ouvrez la palette de commandes en appuyant sur Cmd+Shift+P (Mac) or Ctrl+Shift+P (Windows/Linux).

  2. Tapez Terminal: Create New Terminal, puis appuyez sur Entrée.

  3. Si vous utilisez Mac ou Linux, dans l’onglet terminal, collez le code suivant :

    Shell
    python bugged_factorial_finder.py
    

    Sinon, si vous utilisez Windows, collez le code suivant :

    Shell
    py bugged_factorial_finder.py
    
  4. Appuyez sur la touche Entrée pour exécuter le programme.

Malheureusement, le code ne fonctionne pas comme prévu. Nous voulons qu'il retourne 720, la valeur correcte de la factorielle 6, mais le résultat est beaucoup plus élevé que cela.

Pour comprendre ce qui n'a pas fonctionné, avec le bugged_factorial_finder.py ouvert dans VS Code, ouvrez Copilot Chat et envoyez l'invite suivante :

Text
Why is the output of this code so much higher than expected? Please explain in depth and suggest a solution.

Copilot indiquera que, parce que nous utilisons l'opérateur *= nous multiplions en fait factorial par les deux i et factorial. En d’autres termes, nous multiplions par un factorial supplémentaire pour chaque itération de la boucle.

Pour corriger cette erreur, Copilot suggérera un code qui supprime l'élément supplémentaire factorial de l'équation, ou qui modifie *= l'opérateur à =.

Débogage de votre propre projet

Maintenant que vous vous êtes exercé à déboguer quelques programmes simples avec Copilot, vous pouvez utiliser les mêmes méthodologies pour trouver et corriger les bogues qui se cachent dans votre propre travail.

Par exemple, pour déboguer un message d'erreur généré par votre code, envoyez Copilot l'invite suivante :

Text
Explain in depth why my code produces the following error and how I can fix it:

YOUR-ERROR-MESSAGE

Sinon, si vous déboguez une sortie incorrecte, demandez Copilot pourquoi la sortie est incorrecte et comment vous pouvez la corriger. Pour obtenir les meilleurs résultats, fournissez autant de contexte que possible sur la façon dont la sortie diffère de vos attentes.

Avec ces tactiques, vous êtes bien équipé pour commencer à écraser les bogues dans votre projet !

Étapes suivantes

Au fur et à mesure que vous coderez, vous rencontrerez probablement des scénarios de problèmes spécifiques et des erreurs difficiles à déboguer. Pour une liste des problèmes potentiels et des exemples Copilot Chat d'invites pour les résoudre, voir Erreurs de débogage.