Introduction à l'utilisation de Copilot

Partage vidéo

GitHub Copilot est un outil de complétion de code basé sur l’apprentissage automatique, qui vous aide à écrire du code plus rapidement et à améliorer l’efficacité de la programmation.

Capacités de Copilot Labs

CapacitéDescriptionRemarquesexample
ExplainGénérer des explications pour des fragments de codeOptions avancées pour personnaliser les invites, expliquer plus clairement ses besoinspicture 1
Show example codeGénérer des exemples de code pour des fragments de codeOptions avancées pour personnaliserpicture 2
Language TranslationGénérer des traductions pour des fragments de codeCette traduction est basée sur les langages de programmation, par exemple C++ -> Pythonpicture 3
ReadableAméliorer la lisibilité d’un codePas simplement une mise en forme, mais une véritable amélioration de la lisibilitépicture 4
Add TypesInférence de typesConvertir les variables à type automatique en types explicitespicture 5
Fix bugCorriger les bugsCorriger certains bugs courantspicture 6
DebugRendre le code plus facile à déboguerAjouter des logs ou des variables temporaires pour les points d’arrêtpicture 7
CleanNettoyer le codeSupprimer les parties inutiles du code, commentaires/impressions/code obsolète, etc.picture 8
List stepsLister les étapes du codeCertains codes dépendent strictement de l’ordre d’exécution, il faut clairement commenter l’ordre d’exécutionpicture 9
Make robustRendre le code plus robusteConsidérer les limites/threads multiples/re-entrée, etc.picture 10
ChunkDécouper le codeGénéralement, on souhaite que les fonctions aient <=50 lignes effectives, une imbrication <=4, un éventail <=7, et une complexité cyclomatique <=20picture 11
DocumentGénérer la documentation du codeGénérer du code via des commentaires, ou générer des commentaires et documentation à partir du codepicture 12
CustomOpérations personnaliséesIndiquer à copilot comment manipuler votre codepicture 13

Copilot, c’est quoi ?

L’introduction du site officiel est simple et claire : Votre programmeur pair AI —— Votre programmeur en binôme

Programmation en binôme : Une méthode de développement logiciel agile où deux programmeurs collaborent sur un même ordinateur : l’un tape le code, l’autre examine chaque ligne de code. Les rôles changent fréquemment pour assurer une logique rigoureuse et prévenir les problèmes.

Copilot participe au travail de codage de différentes manières, incarnant le rôle de programmeur en binôme.

Comprendre

Copilot est un grand modèle de langage ; il ne comprend pas notre code, et nous ne comprenons pas non plus le modèle de Copilot. Ici, comprendre signifie la compréhension mutuelle entre un programmeur et un groupe de programmeurs. Nous écrivons ensemble du code basé sur certains consensus.

picture 14

Copilot collecte des informations pour comprendre le contexte. Les informations incluent :

  • Code en cours d’édition
  • Fichiers associés
  • Fichiers ouverts dans l’IDE
  • URL du dépôt
  • Chemin du fichier

Copilot ne comprend pas seulement en se basant sur un commentaire, il collecte suffisamment d’informations contextuelles pour comprendre ce qui doit être fait ensuite.

Recommandations

Recommandations entièresRecommandations inline
picture 15picture 16

Comme on le sait, le moyen le plus courant d’obtenir des recommandations est de décrire les besoins dans un commentaire plutôt que d’écrire directement du code, guidant ainsi GitHub Copilot à fournir des recommandations complètes. Cependant, cela peut entraîner un problème de redondance des commentaires. Les commentaires ne sont pas meilleurs en plus grande quantité ; ils aident à la compréhension, mais ils ne sont pas le corps du code. Un bon code est clair même sans commentaires, grâce à une bonne nomination, une conception raisonnable et une logique claire. Lors de l’utilisation de recommandations inline, il suffit de donner des noms de variables/fonctions/classes appropriés, et Copilot peut toujours fournir des recommandations appropriées.

Outre les entrées externes appropriées, Copilot prend également en charge les recommandations basées sur des fragments de code existants. Copilot Labs -> Show example code peut aider à générer des exemples de code pour des fonctions spécifiques, il suffit de sélectionner le code et de cliquer sur Show example code.

Ctrl+Enter peut toujours donner beaucoup d’inspiration. J’ai créé trois fichiers : un fichier main.cpp vide, un fichier calculator.h vide, et dans calculator.cpp, j’ai implémenté “addition” et “soustraction”. Copilot a fourni les recommandations suivantes :

  1. Ajouter les implémentations de “multiplication” et “division”
  2. Appeler les implémentations “addition, soustraction, multiplication, division” dans main
  3. Méthode de création et d’utilisation d’une bibliothèque statique calculator
  4. Résultat d’exécution de la fonction main, avec un résultat correct
  5. Contenu suggéré pour l’en-tête calculator.h
  6. Commande de compilation g++
  7. Cas de test gtest
  8. Contenu de CMakeLists.txt, incluant les tests
  9. objdump -d main > main.s pour afficher le code assembleur, et afficher le code assembleur
  10. ar pour afficher le contenu de la bibliothèque statique, et afficher le contenu de la bibliothèque statique

Avec la configuration par défaut, chaque frappe de Ctrl+Enter affiche un contenu très différent, impossible de revoir le contenu généré la dernière fois. Si vous avez besoin d’un contenu généré plus stable, vous pouvez définir la valeur de temperature [0, 1]. Plus la valeur est petite, plus le contenu généré est stable ; plus la valeur est grande, plus le contenu généré est imprévisible.

Les raccourcis clavier pour utiliser les recommandations de Copilot

ActionRaccourciNom de la commande
Accepter les recommandations inlineTabeditor.action.inlineSuggest.commit
Ignorer les recommandationsEsceditor.action.inlineSuggest.hide
Afficher la recommandation inline suivanteAlt+]editor.action.inlineSuggest.showNext
Afficher la recommandation inline précédenteAlt+[editor.action.inlineSuggest.showPrevious
Déclencher les recommandations inlineAlt+\editor.action.inlineSuggest.trigger
Afficher plus de recommandations dans un panneau séparéCtrl+Entergithub.copilot.generate

Déboguer

Deux méthodes de débogage généralement utilisées : impression et points d’arrêt.

  • Copilot peut aider à générer automatiquement du code d’impression, en utilisant selon le contexte l’impression ou le journal approprié.
  • Copilot peut aider à modifier la structure du code existant, en fournissant des positions de points d’arrêt pratiques. Certains codes de style imbriqué sont difficiles à interrompre, Copilot peut les modifier directement.

Copilot Labs a pré-configuré les fonctionnalités suivantes :

  • Debug, générer du code de débogage, par exemple des impressions, des points d’arrêt et d’autres codes de débogage.

Révision

La révision est mutuelle ; nous et copilot devons souvent nous réviser mutuellement, ne croyez pas aveuglément au code généré rapidement.

Copilot Labs a pré-configuré les fonctionnalités suivantes :

  • Fix bug, corriger directement les bugs qu’il découvre, il faut d’abord sauvegarder son propre code et examiner attentivement les modifications de Copilot.
  • Make robust, rendre le code plus robuste, Copilot découvrira les situations non traitées et générera des codes d’amélioration, nous devrions être inspirés par cela et penser plus méticuleusement.

Refactorisation

Copilot Labs a pré-configuré les fonctionnalités suivantes :

  • Readable, améliorer la lisibilité, une véritable amélioration de la lisibilité, pas simplement une mise en forme, mais il faut être très prudent lors de l’examen des modifications de Copilot.
  • Clean, rendre le code plus concis, en supprimant le code inutile.
  • Chunk, rendre le code plus facile à comprendre, en divisant le code en morceaux, en divisant une grande fonction en plusieurs petites fonctions.

Documentation

Copilot Labs a pré-configuré les fonctionnalités suivantes :

  • Document, générer de la documentation, par exemple des commentaires de fonctions et d’autres documents.

Utiliser Custom pour étendre les frontières de Copilot

Custom n’est pas très remarquable, mais il rend Copilot infiniment possible. Nous pouvons le comprendre comme un nouveau langage de programmation, ce langage de programmation étant l’anglais ou le chinois.

Vous pouvez saisir via Custom

  • Supprimer le code commenté
    picture 17

  • Ajouter la capacité de multiplication et division
    picture 18

  • Réécrire en go
    picture 19

  • Ajouter le calcul des fonctions trigonométriques
    picture 20

  • Ajouter le calcul différentiel, le chinois ne fonctionne pas bien ici, utilisez support calculate differential, en mode basse température, aucune réponse fiable, en mode haute température, quelques réponses extravagantes.

Dans le travail quotidien, vous pouvez à tout moment faire part à Copilot de vos besoins, grâce à la capacité Custom, vous pouvez demander à Copilot de vous aider à accomplir de nombreuses opérations souhaitées.

Quelques exemples :

promptsDescription
generate the cmake fileGénérer le fichier cmake
generate 10 test cases for tan()Générer 10 cas de test pour tan()
format like google styleFormatter le code
考虑边界情况Considérer les cas limites
确认释放内存Confirmer la libération de la mémoire

L’utilisation de Custom est pleine d’imagination, mais parfois pas très fiable. Il est recommandé de sauvegarder son code avant de l’utiliser, puis de bien examiner les modifications apportées par Copilot.

Obtenir des conseils plus professionnels

Plus les indices donnés à Copilot sont clairs, plus ses recommandations sont précises. Des indices professionnels permettent d’obtenir des recommandations plus professionnelles. Beaucoup de code inapproprié n’affecte ni la compilation du code ni le fonctionnement de l’entreprise, mais affecte la lisibilité, la maintenabilité, l’extensibilité, la réutilisation, ces caractéristiques sont également très importantes. Si vous souhaitez obtenir des recommandations plus professionnelles, il est préférable de connaître les noms anglais des meilleures pratiques.

  • Commencez par utiliser un anglais compréhensible, vous pouvez apprendre l’anglais en regardant des projets open source.
  • Conventions de nommage, le nommage est la définition la plus fondamentale d’un concept, un bon nommage peut éviter les ambiguïtés, éviter que le lecteur ne s’enfonce dans les détails de l’entreprise, améliorant ainsi la lisibilité du code, c’est aussi une meilleure pratique.
    • Souvent, il suffit d’un nom de variable raisonnable pour que Copilot fournisse une suggestion entière et fiable.
  • Liste des modèles de conception, les modèles de conception sont un modèle de résolution de problèmes, en faisant des compromis raisonnables entre les principes de conception SOLID pour différents problèmes, économisant du temps de conception de solution et améliorant la qualité du code.
    • Il suffit d’écrire le nom du modèle requis, Copilot peut générer un fragment de code complet.
  • Liste des algorithmes, de bons algorithmes sont des condensations de haute intelligence pour résoudre une catégorie de problèmes, les développeurs doivent abstraire les problèmes spécifiques par eux-mêmes, et entrer les données abstraites dans l’algorithme.
    • Le code d’algorithme est généralement universel, il suffit d’écrire le nom de l’algorithme, Copilot peut générer un fragment de code d’algorithme, et Copilot peut toujours ingénieusement appliquer les structures de données du contexte aux algorithmes.

Conseils en texte brut

enzh
GitHub Copilot uses the OpenAI Codex to suggest code and entire functions in real-time, right from your editor.GitHub Copilot utilise OpenAI Codex pour suggérer du code et des fonctions entières en temps réel, directement depuis votre éditeur.
Trained on billions of lines of code, GitHub Copilot turns natural language prompts into coding suggestions across dozens of languages.Entraîné sur des milliards de lignes de code, GitHub Copilot transforme les invites en langage naturel en suggestions de codage dans des dizaines de langues.
Don’t fly solo. Developers all over the world use GitHub Copilot to code faster, focus on business logic over boilerplate, and do what matters most: building great software.Ne volez pas en solo. Les développeurs du monde entier utilisent GitHub Copilot pour coder plus rapidement, se concentrer sur la logique métier plutôt que sur les codes types, et faire ce qui importe le plus : construire d’excellents logiciels.
Focus on solving bigger problems. Spend less time creating boilerplate and repetitive code patterns, and more time on what matters: building great software. Write a comment describing the logic you want and GitHub Copilot will immediately suggest code to implement the solution.Concentrez-vous sur la résolution de problèmes plus importants. Passez moins de temps à créer des codes types et des motifs de code répétitifs, et plus de temps sur ce qui compte : construire d’excellents logiciels. Écrivez un commentaire décrivant la logique que vous voulez et GitHub Copilot suggérera immédiatement du code pour mettre en œuvre la solution.
Get AI-based suggestions, just for you. GitHub Copilot shares recommendations based on the project’s context and style conventions. Quickly cycle through lines of code, complete function suggestions, and decide which to accept, reject, or edit.Obtenez des suggestions basées sur l’IA, rien que pour vous. GitHub Copilot partage des recommandations basées sur le contexte et les conventions de style du projet. Parcourez rapidement les lignes de code, complétez les suggestions de fonctions, et décidez lesquelles accepter, rejeter ou modifier.
Code confidently in unfamiliar territory. Whether you’re working in a new language or framework, or just learning to code, GitHub Copilot can help you find your way. Tackle a bug, or learn how to use a new framework without spending most of your time spelunking through the docs or searching the web.Codez en toute confiance dans des territoires inconnus. Que vous travailliez dans un nouveau langage ou framework, ou que vous appreniez simplement à coder, GitHub Copilot peut vous aider à trouver votre chemin. Attaquez un bug, ou apprenez à utiliser un nouveau framework sans passer la majeure partie de votre temps à explorer les docs ou à chercher sur le web.

Ces traductions sont toutes générées par Copilot, on ne peut pas déterminer si ces suggestions sont basées sur la génération de modèles ou sur le comportement de traduction. En fait, tout contenu anglais que vous écrivez dans la colonne en du tableau peut être traduit (généré) par Copilot dans le contenu de la colonne zh.

picture 21

Options de configuration

Options de configuration du client

Option de configurationDescriptionRemarques
temperatureTempérature d’échantillonnage0.0 - 1.0, 0.0 génère les fragments de code les plus courants, 1.0 génère les fragments de code les plus rares et les plus aléatoires
lengthLongueur maximale des suggestions de code généréesPar défaut 500
inlineSuggestCountNombre de suggestions en ligne généréesPar défaut 3
listCountNombre de suggestions généréesPar défaut 10
top_pPriorité d’affichage des suggestions dans les N premières probabilitésPar défaut affiche toutes les suggestions possibles

Les paramètres du compte personnel comportent deux options, l’une liée aux droits d’auteur et l’autre à la confidentialité.

  • Utiliser ou non le code open source pour fournir des suggestions, principalement pour éviter les problèmes de droits d’auteur dans les fragments de code générés par Copilot, évitant ainsi les restrictions de licence open source.
  • Autoriser ou non l’utilisation de vos propres fragments de code pour améliorer le produit, évitant ainsi les risques de fuite de confidentialité.

Sécurité des données

Collecte d’informations de Copilot

  • Version commerciale
    • Informations d’utilisation des fonctionnalités, pouvant contenir des informations personnelles
    • Collecte de fragments de code, les jette immédiatement après avoir fourni des suggestions, ne conserve aucun fragment de code
    • Partage de données, GitHub, Microsoft, OpenAI
  • Version personnelle
    • Informations d’utilisation des fonctionnalités, pouvant contenir des informations personnelles
    • Collecte de fragments de code, selon le paramètre telemetry personnel, les conserve ou les jette après avoir fourni des suggestions
    • Les fragments de code comprennent : code en cours d’édition, fichiers associés, fichiers ouverts dans l’IDE, URL du dépôt, chemin du fichier
    • Partage de données, GitHub, Microsoft, OpenAI
    • Protection des données de code, 1. Chiffrement. 2. Certain employés de GitHub/OpenAI liés à l’équipe Copilot peuvent y accéder. 3. L’accès nécessite un contrôle d’accès basé sur les rôles et une authentification multifacteur
    • Éviter que les fragments de code soient utilisés (conservés ou formés), 1. Configurer 2. Contacter l’équipe Copilot
    • Le code privé sera-t-il utilisé ? Non.
    • Le code généré affichera-t-il des informations personnelles (nom, anniversaire, etc.) ? Rare, encore en amélioration.
  • Déclaration de confidentialité détaillée

Questions fréquentes

  • Les données d’entraînement de Copilot proviennent des dépôts publics de Github.
  • Le code écrit par Copilot est-il parfait ? Pas nécessairement.
  • Peut-il écrire du code pour une nouvelle plateforme ? Capacité limitée pour le moment.
  • Comment utiliser Copilot de manière plus efficace ? Diviser le code en petites fonctions, décrire la fonction de la fonction en langage naturel, ainsi que les entrées et sorties, utiliser des noms de variables et de fonctions avec un sens spécifique.
  • Le code généré par Copilot contient-il des bugs ? Bien sûr, impossible à éviter.
  • Le code généré par Copilot peut-il être utilisé directement ? Pas nécessairement, parfois il faut le modifier.
  • Le code généré par Copilot peut-il être utilisé pour des projets commerciaux ? Oui.
    • Le code généré par Copilot appartient-il aux droits de propriété intellectuelle de Copilot ? Non.
    • Copilot copie-t-il le code à partir du jeu de données d’entraînement ? Copilot ne copie pas le code, il y a une très faible probabilité qu’il existe plus de 150 lignes de code pouvant correspondre au jeu de données d’entraînement, les deux cas suivants peuvent se produire
      • Lorsque les informations de contexte sont très limitées
      • C’est une solution à un problème commun
    • Comment éviter la répétition avec le code public, définir le filtre picture 22
  • Comment utiliser correctement le code généré par Copilot ? 1. Tester/inspecter soi-même le code généré ; 2. Ne pas compiler ou exécuter automatiquement le code généré avant l’inspection.
  • Copilot a-t-il la même performance dans chaque langue naturelle ? La meilleure performance est en anglais.
  • Copilot générera-t-il du contenu offensant ? Un filtre a été mis en place, mais il n’est pas exclu qu’il puisse apparaître.