Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Relire du code généré

Après cette leçon: Je peux relire un code que je n’ai pas écrit et repérer ses fautes avec une liste de questions.

Leçon de 60 min2 commandesLab agent de code IA : utiliser opencode pour expliquer et corriger du code, et vérifier son travail

Comment relire du code généré ?

Relire du code généré consiste à le lire, à le lancer et à lui poser des questions avant de l’accepter. Cette relecture s’appelle une revue de code.

Elle compte plus que jamais : un assistant écrit en dix secondes ce qu’une personne écrit en une heure. Vous devenez le relecteur, et la qualité dépend de votre attention.

À la fin de cette leçon

Remarque

Je peux relire un code que je n’ai pas écrit et repérer ses fautes avec une liste de questions.

Mots-clés

MotCe que ça veut direExemple
Revue de codela relecture d’un code avant de l’accepter
Diffl’affichage des lignes retirées et ajoutées par une modification
Cas limiteune entrée extrême ou vide, où le code se trompe souventune liste vide
Exceptionune erreur que Python signale quand une opération échoue
Effet de bordun changement fait ailleurs, comme écrire un fichier

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Une revue a trois gestes : lire, lancer, questionner

Lire : comprenez chaque ligne, et demandez-vous si elle fait ce que vous avez demandé, et rien de plus. Lancer : exécutez le code et ses tests avec un exemple dont vous connaissez la réponse.

Questionner : que se passe-t-il si l’entrée est vide, très grande, ou fausse ? Que lit ou que modifie ce code, en dehors de son travail ?

Une liste de questions pour chaque relecture

QuestionCe qu’elle trouve
Fait-il ce que j’ai demandé ?Un code à côté du sujet
Fait-il autre chose en plus ?Des changements que vous n’aviez pas demandés
Que fait-il avec une entrée vide ?Une division par zéro
Que cache-t-il quand il échoue ?Une erreur avalée en silence
Les fonctions et les options existent-elles ?Des noms inventés

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Les fautes fréquentes d’un code généré

Un assistant écrit du code qui a l’air propre. Ses fautes sont discrètes. Il appelle parfois une fonction qui n’existe pas. Il avale les erreurs avec un except vide. Il utilise eval, qui exécute n’importe quel texte reçu.

Il peut aussi modifier un fichier que vous n’aviez pas cité. Cherchez ces fautes en premier.

Un code généré à relire

Code: python
def lire_prix(texte):
    # Transforme un texte comme "35" en nombre.
    try:
        return eval(texte)
    except:
        return 0

def moyenne(notes):
    total = 0
    for note in notes:
        total = total + note
    return total / len(notes)

print(lire_prix("35"))
print(moyenne([12, 8]))

Ce que la relecture trouve dans ce code

Dans lire_prix, eval exécute le texte : si quelqu’un tape une instruction, elle s’exécute. Et except vide renvoie 0 pour toute erreur, donc un prix illisible devient un prix gratuit.

Dans moyenne, une liste vide fait diviser par zéro. Chaque faute se trouve par une question de la liste.

Commencez par le plan du projet

Devant un projet inconnu, établissez d’abord son plan : quelles fonctions, quels tests. Les deux commandes suivantes lisent le projet de la boutique du laboratoire et ne modifient rien.

La première affiche les lignes où une fonction commence : 4, 12 et 16. La seconde compte les tests du fichier de tests : 5.

Lister les fonctions du programme

Commande
docker exec -w /home/node/project agent grep -n "function" shop.js

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Compter les tests du projet

Commande
docker exec -w /home/node/project agent grep -c "^test(" shop.test.js

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Lisez le diff, pas seulement le résultat

Quand l’assistant modifie un fichier, un diff montre les lignes retirées (signe moins) et les lignes ajoutées (signe plus). Lisez toutes les lignes, pas seulement celle que vous attendiez.

Posez deux questions : cette ligne répond-elle à ma demande ? Y a-t-il des lignes en plus que je n’ai pas demandées ?

Un diff lu ligne par ligne

Ligne du diffQuestion à poser
- amende = 20 * joursPourquoi retire-t-on cette ligne ?
+ amende = min(20 * jours, 600)Est-ce bien le plafond demandé ?
+ import osPourquoi un nouvel import ?
- assert amende(0) == 0Un test a été retiré : pourquoi ?

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Erreur fréquente

Attention

Beaucoup pensent qu’un code qui tourne sans erreur est correct. Il peut rendre un résultat faux sans rien signaler. Un test passe ou échoue, mais seule la relecture voit une erreur avalée ou un test supprimé.

Écrire un petit relecteur automatique

Dans le devoir, votre fonction lit les lignes d’un code et signale les fautes de la liste, numéro de ligne compris. Cinq règles, testées dans cet ordre : except: seul sur la ligne, eval(, == None, import *, TODO.

Chaque ligne donne au plus un signalement. Un relecteur humain fait mieux, mais cet outil attrape les fautes les plus courantes.

À propos de ce labo et de sa source: Lab agent de code IA : utiliser opencode pour expliquer et corriger du code, et vérifier son travail

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.