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
190 vues
certi.news Editorial Team
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é
c
Auteur

certi.news Editorial Team

À retenir

Le projet open source Modern Go Guidelines de JetBrains fournit aux agents de programmation des recommandations Go liées à la version spécifiée dans le fichier go.mod, ce qui les aide à suggérer des modèles modernes et compatibles. Le projet s’appuie sur les outils list et explain pour fournir progressivement le contexte, mais il ne remplace ni la revue du développeur ni les tests.

  • Le projet couvre les recommandations relatives aux fonctionnalités du langage et de la bibliothèque standard pour les versions de Go allant de 1.0 à 1.27.
  • Si le projet utilise Go 1.25, l’agent ne suggérera pas de fonctionnalités nécessitant Go 1.26 ou 1.27.
  • L’outil list affiche les recommandations courtes pertinentes, tandis que explain fournit des explications et des exemples avant-après.
  • Le projet inclut des exemples tels que sync.WaitGroup.Go, errors.AsType, strings.CutLast et bytes.CutLast.
  • Modern Go Guidelines aide l’agent pendant la génération du code, tandis que go fix reste destiné à la mise à jour des modèles existants.
  • L’intégration n’apporte aucune modification aux fichiers du projet lors de son installation et ne supprime pas la nécessité d’une revue par le développeur ni de tests.

FAQ

Qu’est-ce que Modern Go Guidelines ?

Il s’agit d’un projet open source créé par l’équipe GoLand de JetBrains pour fournir aux agents de programmation des recommandations Go modernes liées à la version de Go utilisée dans le projet.

Comment le projet détermine-t-il les recommandations que l’agent peut utiliser ?

Il lit la version de Go déclarée dans le fichier go.mod, puis rend disponibles les recommandations propres à cette version et aux versions antérieures, sans suggérer de fonctionnalités nécessitant une version plus récente.

Quelle est la différence entre list et explain ?

list affiche des recommandations courtes et pertinentes pour un fichier ou une version donnés, tandis que explain fournit une explication plus détaillée ainsi qu’un exemple comparant l’ancien modèle et l’alternative moderne.

Le projet remplace-t-il go fix ?

Non. Modern Go Guidelines aide l’agent à commencer avec des modèles modernes, tandis que go fix aide à mettre à jour les modèles déjà présents dans la base de code.

Dans la même catégorie

À lire également

Voir toutes les actualités