Les erreurs de relecture de code avec l'IA
1. Prendre une IA grand public parce que « c'est juste un bout de code »
Un fichier isolé paraît anodin. Mais c'est souvent le fichier qui compte : l'algorithme de tarification, la logique d'un moteur de recommandation, le contournement d'une limite d'une bibliothèque. Une fois collé dans une IA grand public, il est chez un tiers qui peut conserver l'historique, et dont le fournisseur peut être soumis à des lois étrangères qui l'obligent à communiquer ce qu'il détient.
La parade : faire la relecture sur un modèle confidentiel. Dans IA Confidential, les modèles locaux et spécialisés sont des modèles ouverts installés sur des serveurs en Suisse, sous la loi suisse sur la protection des données et hors du champ du CLOUD Act ; ils ne transmettent rien à des tiers. Le choix du modèle est automatique ou manuel, et pour une relecture, un modèle confidentiel est le bon point de départ.
2. Laisser les secrets et les données réelles dans le fichier
Clés d'accès en dur, chaîne de connexion à la base, jeton d'un service tiers, fichier de configuration d'environnement joint « pour le contexte », trace d'erreur contenant l'adresse électronique d'un utilisateur. On les colle sans les voir, parce qu'on cherche un bug, pas une fuite.
La parade : retirer les secrets avant tout envoi, même vers un outil confidentiel. Une relecture n'a jamais besoin de la vraie valeur d'une clé : remplacez-la par [CLÉ_API], et les données réelles par des valeurs inventées. Si une clé est déjà partie quelque part, changez-la. Le guide sur les données à ne jamais coller dans une IA détaille le cas des secrets d'accès. La demande la plus simple montre qu'on peut s'en passer :
Voici une trace d'erreur PHP et la méthode qui la déclenche. J'ai remplacé les identifiants et les données par des valeurs fictives. Explique-moi la cause probable en trois phrases, puis propose la correction la plus petite possible.
3. Croire que l'anonymisation protège le code lui-même
Renommer calculRemiseClientX en f1, retirer le nom de l'entreprise des commentaires : on a l'impression d'avoir rendu le code anonyme. Or ce qui fait la valeur d'un code propriétaire, c'est sa logique, et elle reste intacte. Les noms de tables, les domaines internes et les messages d'erreur suffisent souvent à reconnaître le projet.
Le filtre confidentialité d'IA Confidential ne prétend pas faire mieux. Quand vous choisissez un modèle externe, il détecte d'abord les données sensibles et vous laisse décider : répondre avec un modèle confidentiel, message intact ; envoyer une version anonymisée, que vous pouvez relire et corriger ; ou envoyer tel quel. Pour une pièce jointe, seuls les extraits utiles partent, pseudonymisés. Mais ce qu'il remplace, ce sont des données qui identifient : un nom, une adresse, un identifiant. Pas un algorithme.
La parade : distinguer deux types de questions. « Pourquoi ce tri est-il lent ? » sur votre module de facturation reste sur un modèle confidentiel. « Comment fonctionne le verrouillage optimiste en général ? » peut aller vers un modèle externe, sans votre code. Pour les noms que vous ne voulez jamais voir sortir, nom du client, nom de code du projet, domaine interne, écrivez-les dans les consignes d'anonymisation du panneau Confidentialité : ce sont précisément les éléments qu'aucun détecteur ne devine seul. Le guide anonymisation ou pseudonymisation explique la différence.
4. Donner tout le dépôt, ou un fichier sans son contexte
Deux excès opposés. Soit on joint un seul fichier, et l'IA invente le comportement des classes qu'elle ne voit pas. Soit on lui confie la racine du projet « pour qu'elle ait tout », avec la configuration de production, les sauvegardes de base et les scripts de déploiement.
La parade : donner le contexte utile, et lui seul. Sur ordinateur, avec Chrome, Edge ou Opera, vous pouvez ajouter à un espace jusqu'à dix dossiers de votre machine, avec des droits par dossier : recherche, lecture, écriture. Pour une relecture, ajoutez le dossier du module concerné plutôt que la racine, sans le droit d'écriture, et cochez l'option « Modèles confidentiels » : le dossier n'est alors jamais envoyé à un modèle externe. Avec un compte connecté, l'assistant y retrouve automatiquement les passages utiles à votre question. Sur un autre navigateur, joignez les fichiers nécessaires à votre message : ils sont lus dans votre navigateur, et aucun n'est conservé sur nos serveurs.
5. Demander « relis ce code » sans dire ce qu'on cherche
Sans critère, la relecture est générique : des remarques de style, un conseil de nommage, une suggestion d'ajouter des commentaires. La vraie question (une fuite mémoire, une requête en boucle, une faille d'injection) passe entre les lignes.
La parade : fixer le cadre une fois, puis préciser à chaque demande. Créez un espace de type « Développement » par projet : il propose des exemples pour lire, corriger et écrire du code, et des réponses détaillées. Dans l'onglet Assistant, les consignes d'espace posent le langage et sa version, le cadriciel, vos conventions, ce qui est hors sujet ; elles priment sur vos préférences générales. La demande dit ensuite ce que vous cherchez :
Relis la méthode d'import ci-dessous, appelée sur des fichiers de 50 000 lignes. Je ne veux pas de remarques de style. Cherche uniquement : les requêtes exécutées dans une boucle, les chargements complets en mémoire, et les cas où une ligne invalide interrompt tout l'import. Pour chaque point, cite la ligne et estime l'effet sur un gros fichier.
6. Appliquer la correction sans la relire ni la tester
L'IA se trompe avec assurance. Elle invente une méthode qui n'existe pas dans votre version de la bibliothèque, propose une correction qui fait passer le test sans traiter la cause, déclare un code « sûr » alors qu'une faille lui a échappé. Une relecture par IA n'est pas un audit de sécurité, et un correctif accepté en vitesse finit en production jeudi.
La parade : exiger qu'elle s'explique, et vérifier. Demandez des numéros de ligne, des hypothèses explicites, ce qu'elle n'a pas pu voir. Puis passez chaque correction par vos tests et par la revue humaine habituelle de l'équipe. La demande la plus poussée ressemble à ceci :
Voici le différentiel d'une demande de fusion qui modifie notre authentification par jeton, avec les deux fichiers qu'il touche. Fais une relecture de sécurité : contrôle d'accès, validation des entrées, gestion des erreurs, comparaison des jetons. Pour chaque risque, donne la ligne, un scénario d'attaque concret et la correction minimale. Liste ensuite ce que tu n'as pas pu vérifier faute de voir le reste du code, et propose trois tests qui prouveraient que la correction fonctionne.
La responsabilité du code fusionné reste celle de l'équipe qui le fusionne.