Programmation et développement logiciel

Comment Modern Go Guidelines aide les agents de programmation dotés d’IA à écrire du code Go moderne

GoLand de JetBrains a lancé un projet open source qui fournit aux agents de programmation des recommandations liées à la version de Go utilisée dans le projet, afin de réduire leur dépendance à des modèles anciens ou à des fonctionnalités incompatibles. Le projet s’appuie sur les outils list et explain pour fournir progressivement le contexte approprié sans modifier les fichiers du projet.

2026-08-24
6 min de lecture
14 vues
فريق تحرير certi.news
Comment Modern Go Guidelines aide les agents de programmation dotés d’IA à écrire du code Go moderne

Les agents de programmation dotés d’IA peuvent produire du code Go exécutable, mais cela ne signifie pas qu’ils utilisent les syntaxes les plus récentes du langage ou les ajouts les plus récents à sa bibliothèque standard. Les modèles Go plus anciens sont beaucoup plus présents dans les données d’entraînement, tandis que les fonctionnalités plus récentes peuvent ne pas apparaître dans les données utilisées par le modèle. Pour combler cet écart, l’équipe GoLand de JetBrains a créé un projet open source nommé Modern Go Guidelines, qui fournit aux agents des recommandations pratiques liées à la version de Go déclarée dans le projet.

Que propose le projet ?

Les recommandations couvrent les fonctionnalités du langage et les ajouts utiles à la bibliothèque standard dans les versions de Go allant de 1.0 à 1.27, ainsi que les modèles pris en charge par l’analyseur go modernize. L’agent ne reçoit pas de recommandations pour des versions plus récentes que celle utilisée dans le projet. Si le fichier go.mod contient la directive go 1.25, l’agent peut utiliser les recommandations de Go 1.25 et des versions antérieures, mais il ne recevra pas de suggestions reposant sur Go 1.26 ou Go 1.27.

Cela signifie, selon l’exemple présenté dans l’article, que l’agent peut suggérer sync.WaitGroup.Go, introduit dans Go 1.25, mais qu’il ne suggérera pas errors.AsType, qui nécessite Go 1.26. Ce lien entre les recommandations et la version du projet vise à réduire le risque de générer du code nécessitant une version plus récente que l’environnement disponible, tout en diminuant la quantité de contexte inutile lue par l’agent.

Divulgation progressive plutôt que chargement de tout le contexte

Le composant complémentaire comprend un outil en ligne de commande nommé go-modern-guidelines et une compétence d’instructions nommée use-modern-go. L’outil prend en charge deux commandes principales :

  • list : affiche des recommandations courtes et pertinentes pour un fichier Go ou pour une version précise.
  • explain : fournit une explication plus détaillée ainsi qu’un exemple comparant l’ancien modèle et l’alternative moderne.

Les instructions suggèrent que l’agent exécute la commande list pour le fichier concerné avant de le modifier, puis utilise explain lorsqu’il doit comprendre une règle particulière. Les recommandations peuvent être demandées pour un fichier tel que ./internal/worker/worker.go, ou une version peut être indiquée directement avec --go-version 1.27. La sortie de list commence par les recommandations les plus récentes applicables et comprend un identifiant stable pour chaque règle, comme sync_waitgroup_go, testing_t_context et json_omitzero.

Exemples de modèles modernes

Les recommandations comprennent des exemples pratiques de remplacement de modèles courants par des modèles plus récents, comme l’utilisation de slices.Contains à la place d’une boucle de recherche écrite manuellement, de min et max à la place de comparaisons manuelles, et de cmp.Or à la place d’une chaîne sélectionnant la première valeur non nulle.

Elles expliquent également l’utilisation de sync.WaitGroup.Go plutôt que la répartition séparée des opérations Add, go et Done, l’utilisation de errors.AsType pour effectuer une correspondance de type sûre des erreurs dans Go 1.26 et les versions ultérieures, ainsi que de new(value) lorsqu’un pointeur vers une valeur est nécessaire dans Go 1.26 et les versions ultérieures. Dans Go 1.27, les recommandations présentent strings.CutLast et bytes.CutLast comme une alternative à LastIndex et au découpage manuel.

L’exemple concernant generic_methods, disponible depuis Go 1.27, montre comment déplacer une opération générique d’une fonction auxiliaire au niveau du paquet vers une méthode du type lorsque l’opération est naturellement liée à ce type. La commande explain renvoie une explication de la règle avec un exemple avant et après, et peut également expliquer plusieurs règles en un seul appel.

Qu’est-ce qui change concrètement pour les développeurs ?

La valeur principale ne réside pas dans la mise à jour automatique de l’ancien code, mais dans le fait de fournir à l’agent une référence concise et ciblée lors de la génération ou de la modification du code. Le projet s’intègre à des outils tels que go fix au lieu de les remplacer : les recommandations de Modern Go Guidelines aident l’agent à commencer avec un modèle moderne, tandis que go fix aide à mettre à jour les modèles déjà présents dans la base de code.

Le composant complémentaire peut être installé depuis le marché des extensions ou depuis un dépôt local. L’intégration nécessite que la chaîne d’outils Go soit présente dans le PATH. Lors de la première utilisation, l’intégration installe l’outil en ligne de commande via go install et le stocke dans un cache local, sans modifier le projet lui-même. L’article présente des commandes pour ajouter le dépôt comme marché Claude, installer modern-go-guidelines et activer /use-modern-go. Il mentionne également une procédure pour tester un dépôt local avant de le publier ou de le mettre à jour, avec des exemples comprenant Claude et Codex.

Lecture de certi.news

Le projet s’attaque à un problème pratique lié à l’utilisation des agents d’intelligence artificielle : l’exactitude du code du point de vue de la compilation ne garantit pas son adéquation avec la version du langage ni son recours aux meilleures pratiques disponibles. Le fait de lier les recommandations au fichier go.mod établit une limite technique claire à ce que l’agent peut suggérer, tandis que la divulgation progressive évite de le submerger de contexte dont il n’a pas besoin. Toutefois, l’outil ne supprime pas la nécessité d’une revue par le développeur ou de tests : il fournit des règles et des exemples à l’agent, et la source ne démontre pas qu’il vérifie indépendamment chaque modification qu’il produit. En outre, la couverture annoncée va jusqu’à Go 1.27 ; les recommandations concernant les versions ultérieures devront donc encore être ajoutées et mises à jour.

Source de l’actualité
ف
Auteur

فريق تحرير certi.news

Dans la même catégorie

À lire également

Voir toutes les actualités