Nos articles de blog

GitHub Copilot : Votre partenaire de programmation

5 octobre 2022 / Par Nicolas

Temps de lecture : 3 min

sumit
sumit

GitHub Copilot : une IA au service des développeurs

GitHub Copilot est un outil utilisant l’intelligence artificielle Codex développé par GitHub et Open AI.

GitHub Copilot permet de générer du code à partir d’un nom de méthode, de commentaires ou de code en temps réel. Cela peut aller de la simple création d’une requête SQL à une méthode pour analyser les dépenses du mois.

Actuellement cet outil a été entrainé pour aider les développeurs sur 4 langages :

  • Le type script/javascript
  • Le go
  • Le python
  • Le Ruby

Codex, quant à lui, fait le travail de compréhension. Il analyse le nom, la méthode, le commentaire ou le code que vous être en train d’implémenter. Il essaye de comprendre cela puis les découpe en plusieurs parties simples pour fournir une solution adaptée.

Étant donné que Codex a analysé des milliards de lignes de code public, il peut fournir une aide pour tous les langages. Cependant, cela sera moins efficace avec les langages sur lesquels il n’a pas été entrainé.

GitHub Copilot comment ça marche ?

GitHub Copilot va scanner les repositories présents sur l’outil afin de proposer un bout de code qui complétera ou implémentera votre méthode en fonction :

  • De vos commentaires
  • Du nom de la méthode

Il peut aussi s’adonner à l’algorithmie en proposant des solutions à des problèmes plus au moins complexes. Si l’implémentation fournie ne vous convient pas vous pouvez lui demander de vous donner d’autres solutions.

Copilot permet aussi d’avoir une explication du code produit afin de comprendre comment celui-ci fonctionne. Il a aussi la possibilité de faire du refactoring de code ou de la translation vers un autre langage.

GitHub Copilot va envoyer une partie de votre code sur leurs serveurs dans le but de vous proposer une solution en adéquation avec votre besoin. À des fins de télémétries, GitHub Copilot enverra aussi un retour pour savoir si vous avez ou non accepté une des implémentations fournies.

Actuellement, il n’est pas possible d’accepter ou de refuser l’envoi des données télémétriques ce qui peut décourager certains secteurs à utiliser cet outil. Néanmoins, Copilot n’utilise pas le code que vous être en train d’implémenter pour se former en temps réel.

Pourquoi est-il sujet à la controverse ?

Étant entrainé sur des repositories GitHub public, le code qu’a analysé Copilot n’est peut-être pas libre de droits et ne peut donc pas être utilisé à des fins commerciales ou non commerciales. Il est possible que ce code soit inutilisable car protégé même s’il est adapté à votre solution.

En cas de code possédant des failles de sécurité, qui est responsable ? Le code fourni par Copilot ? Le développeur qui l’a mis en place ? L’entreprise qui a fourni l’applicatif ou le client qui n’a pas su déceler cette faille ? Ceux-ci sont encore des points assez flous.

Copilot peut aider à fournir un environnement pour apprendre un nouveau langage mais il peut aussi avoir un effet pervers. En utilisant le code sans le comprendre, cela peut empêcher l’utilisateur de monter en compétence sur ce nouvel environnement.

GitHub Copilot : un outil utile avec quelques défaut

Les points positifs :

  • Permet de découvrir de nouvelles librairies et de nouvelles méthodes
  • Remise en question de ce que l’on a développé
  • Amélioration de la productivité
  • Aide au changement d’environnement

Les points Négatifs :

  • Flou juridique sur le code utilisé et fourni
  • Code pas forcément optimisé
  • Problème de sécurité et bug
  • L’utilisateur peut devenir dépendant
  • Son prix
  • Le contrôle sur les données

GitHub Copilot manque encore de maturité au niveau juridique ainsi que sur le traitement des données et code utilisé pour s’entrainer.

Il est une aide appréciable mais il faut une certaine intelligence dans son utilisation : une remise en question constante et une review dans le code fourni pour éviter les failles de sécurité et ou les bugs. La review utilisée à bon escient permet de monté en compétence.

De plus, il doit être utilisé à partir du moment où le langage ou la logique de développement est acquise pour ne pas être totalement perdu sans cet outil, ce qui rendrait le développeur inefficace.