Inleiding tot het gebruik van Copilot

Video-deel

GitHub Copilot is een op machine learning gebaseerde code-completeringstool die je helpt sneller code te schrijven en de programmeerproductiviteit te verhogen.

Copilot Labs-vaardigheden

Vaardigheid Beschrijving Opmerkingen Voorbeeld
Uitleggen Genereer een uitleg voor een codefragment Er zijn geavanceerde opties voor het aanpassen van prompts, duidelijker uitleg van je behoeften picture 1
Toon voorbeeldcode Genereer voorbeeldcode voor een codefragment Er zijn geavanceerde opties voor aanpassing picture 2
Taalvertaling Genereer een vertaling van een codefragment Deze vertaling is gebaseerd op programmeertalen, bijvoorbeeld C++ -> Python picture 3
Leesbaar Verbeter de leesbaarheid van een stuk code Niet gewoon formatteren, echte verbetering van de leesbaarheid picture 4
Typen toevoegen Type-inferentie Verander variabelen met automatisch type naar expliciete types picture 5
Bug repareren Repareer bugs Repareer enkele veelvoorkomende bugs picture 6
Debuggen Maak code makkelijker te debuggen Voeg printlogs toe, of voeg tijdelijke variabelen toe voor breakpoints picture 7
Schoonmaken Code schoonmaken Verwijder nutteloze delen van de code, commentaar/print/afgedankte code, etc. picture 8
Stappen opsommen Lijst de stappen van de code Sommige code is strikt afhankelijk van volgorde, moet duidelijk worden aangegeven in commentaar picture 9
Robuust maken Maak code robuuster Overweeg grenzen/threading/herbetreding, etc. picture 10
Chunken Code in blokken verdelen Over het algemeen wordt gewenst dat functies <=50 effectieve regels hebben, <=4 geneste niveaus, <=7 fan-out en cyclomatische complexiteit <=20 picture 11
Documenteren Genereer documentatie voor de code Genereer code door commentaar te schrijven, of genereer commentaar en documentatie van code picture 12
Aangepast Aangepaste operaties Vertel Copilot hoe hij met je code moet omgaan picture 13

Wat is Copilot

De introductie op de officiële website is eenvoudig en duidelijk: Your AI pair programmer —— jouw collega programmeur

Pair programming: een Agile softwareontwikkelingsmethode waarbij twee programmeurs samen aan één computer werken: één programmeur typt de code, de ander controleert elke regel code. De rollen wisselen regelmatig om logische consistentie en probleempreventie te waarborgen.

Copilot draagt op de volgende manieren bij aan het coderingsproces en vervult de rol van collega programmeur.

Begrip

Copilot is een grote taalmodel dat geen begrip heeft van onze code, net zoals wij geen begrip hebben van het model van Copilot. Hierbij gaat het begrip om het wederzijdse begrip tussen een programmeur en een groep programmeurs. We schrijven code op basis van een aantal overeenkomsten.

picture 14

Copilot verzamelt informatie om de context te begrijpen. De informatie omvat:

  • De code die momenteel wordt bewerkt
  • Bijbehorende bestanden
  • Bestanden die in de IDE zijn geopend
  • Bibliotheken
  • Bestandspaden

Copilot begrijpt niet alleen via een enkele commentaarregel, maar verzamelt voldoende contextuele informatie om te begrijpen wat de volgende stap zal zijn.

Aanbevelingen

Gehele suggestie Inline suggestie
picture 15 picture 16

Iedereen weet dat de meest voorkomende manier om suggesties te krijgen via commentaar is dat beschrijft wat er nodig is, in plaats van direct code te schrijven, waardoor GitHub Copilot gehele suggesties kan geven. Dit kan echter overmatig commentaar veroorzaken. Commentaar is niet hoe meer hoe beter, het is geen codehoofdgedeelte. Goede code is duidelijk zonder commentaar, afhankelijk van geschikte benamingen, redelijk ontwerp en heldere logica. Bij het gebruik van inline suggesties is het voldoende om geschikte variabele-, functie- en klassenamen te geven, Copilot geeft altijd geschikte suggesties.

Naast geschikte externe input ondersteunt Copilot ook suggesties op basis van bestaande codefragmenten. Copilot Labs -> Toon voorbeeldcode helpt bij het genereren van voorbeeldcode voor een specifieke functie, selecteer gewoon de code en klik op Toon voorbeeldcode.

Ctrl + Enter, geeft altijd veel inspiratie. Ik heb drie bestanden aangemaakt, een leeg main.cpp, een leeg calculator.h en in calculator.cpp de implementatie van “optellen” en “aftrekken”. Copilot gaf de volgende suggesties:

  1. Voeg de implementatie van “vermenigvuldigen” en “delen” toe
  2. Roep “optellen, aftrekken, vermenigvuldigen en delen” aan in main
  3. Methoden voor het maken en gebruiken van de calculator statische bibliotheek
  4. Het uitvoerresultaat van de main-functie, en het resultaat is correct
  5. Suggesties voor de inhoud van het calculator.h header-bestand
  6. g++ compilatiecommando
  7. gtest testgevallen
  8. Inhoud van CMakeLists.txt, inclusief testen
  9. objdump -d main > main.s om assemblercode te bekijken, en de assemblercode wordt getoond
  10. ar om de inhoud van de statische bibliotheek te bekijken, en de inhoud van de statische bibliotheek wordt getoond

Met de standaardinstellingen verschilt de inhoud die wordt getoond bij elke Ctrl + Enter erg veel, en je kunt de vorige gegenereerde inhoud niet terugkijken. Als je een stabielere inhoud wilt genereren, kun je de temperature waarde instellen op [0, 1]. Hoe lager de waarde, hoe stabielere inhoud wordt gegenereerd; hoe hoger de waarde, hoe onvoorspelbaarder de gegenereerde inhoud.
De bovenstaande suggesties gaan verder dan de algemene suggesties die je dagelijks gebruikt. Dit komt mogelijk doordat het project echt te eenvoudig is. Zodra de compilatiebestanden en headerbestanden compleet zijn geschreven, zullen er niet meer zoveel suggesties zijn, maar ze zijn nog steeds vaak zeer inspirerend.

Gebruik de sneltoetsen voor Copilot-suggesties

Actie Sneltoets Opdrachtnaam
Inline suggestie accepteren Tab editor.action.inlineSuggest.commit
Suggestie negeren Esc editor.action.inlineSuggest.hide
Toon volgende inline suggestie Alt + ] editor.action.inlineSuggest.showNext
Toon vorige inline suggestie Alt + [ editor.action.inlineSuggest.showPrevious
Trigger inline suggestie Alt + \ editor.action.inlineSuggest.trigger
Meer suggesties tonen in aparte paneel Ctrl + Enter github.copilot.generate

Debuggen

Er zijn meestal twee debugmethoden: printen en breakpoints.

  • Copilot kan helpen bij het automatisch genereren van printcode, het kiezen van het juiste formaat op basis van de context.
  • Copilot kan helpen bij het aanpassen van de bestaande codestructuur, het bieden van handige breakpointposities. Sommige geneste code is moeilijk te debuggen, Copilot kan deze direct aanpassen.

Copilot Labs heeft de volgende functies ingebouwd:

  • Debug, genereer debugcode, zoals printen, breakpoints en andere debugcode.

Inspectie

Inspectie is wederzijds. Wij en copilot moeten elkaar regelmatig inspecteren en niet blindelings vertrouwen op snel gegenereerde code.

Copilot Labs heeft de volgende functies ingebouwd:

  • Fix bug, repareer direct de bugs die het ontdekt, zorg ervoor dat je eerst je eigen code opslaat en de wijzigingen van Copilot zorgvuldig inspecteert.
  • Make robust, maak code robuuster, Copilot zal onbehandelde situaties ontdekken en verbetercode genereren, we moeten hier inspiratie uit putten en nadenkender zijn.

Refactoren

Copilot Labs heeft de volgende functies ingebouwd:

  • Readable, verbeter de leesbaarheid, echte verbetering van de leesbaarheid, niet gewoon formatteren, maar wees voorzichtig met de wijzigingen van Copilot.
  • Clean, maak de code eenvoudiger, verwijder overbodige code.
  • Chunk, maak de code begrijpelijker, verdeel de code in blokken, verdeel een grote functie in meerdere kleine functies.

Documentatie

Copilot Labs heeft de volgende functies ingebouwd:

  • Document, genereer documentatie, zoals functiecommentaar en andere documentatie.

Gebruik aangepaste uitbreiding Copilot-bereik

Custom valt niet op, maar het geeft Copilot oneindige mogelijkheden. We kunnen het begrijpen als een nieuwe programmeertaal, deze programmeertaal is Engels of Chinees.

Je kunt via Custom invoeren

  • Verwijder commentaarcode
    picture 17

  • Voeg vermenigvuldig- en deelvermogen toe
    picture 18

  • Herschrijf naar go
    picture 19

  • Voeg trigonometrische berekening toe
    picture 20

  • Voeg differentiaalberekening toe, hier werkt Chinees niet goed, gebruik ondersteun differentiaalberekening, bij lage temperatuur geen betrouwbare antwoorden, bij hoge temperatuur een paar rare antwoorden.

In het dagelijks werk kun je Copilot altijd vragen om je wensen te vervullen, via de Custom-mogelijkheid kan Copilot helpen bij het voltooien van veel gewenste operaties.

Enkele voorbeelden:

prompts Beschrijving
genereer het cmake bestand Genereer cmake bestand
genereer 10 testgevallen voor tan() Genereer 10 testgevallen
formateer zoals google stijl Formateer code
denk aan grensgevallen Denk aan grensgevallen
bevestig het vrijgeven van geheugen Bevestig het vrijgeven van geheugen

Custom gebruik is vol verbeelding, maar soms niet zo betrouwbaar, het wordt aanbevolen om code eerst op te slaan, en dan de wijzigingen van Copilot goed te inspecteren.

Krijg professionelere adviezen

Hoe duidelijker de hints die je aan Copilot geeft, hoe accurater de suggesties die het geeft. Professionele hints kunnen professionelere suggesties opleveren. Veel ongeschikte code beïnvloedt noch de compilatie, noch de bedrijfsvoering, maar wel de leesbaarheid, onderhoud, uitbreidbaarheid en hergebruik. Deze kenmerken zijn ook zeer belangrijk. Als je professionelere suggesties wilt krijgen, is het beter om de Engelse namen van enkele beste praktijken te kennen.

  • Begin met het gebruik van begrijpelijk Engels, leer Engels door open source projecten te bekijken.
  • Naamgevingsconventies, naamgeving is de meest fundamentele definitie van concepten, goede naamgeving kan dubbelzinnigheid voorkomen, voorkomt dat lezers in de details van de business verstrikt raken, en verhoogt de leesbaarheid van de code, wat ook een beste praktijk is.
    • Meestal is slechts een redelijke variabelenaam nodig, Copilot kan dan een volledig stuk betrouwbare suggesties geven.
  • Lijst met ontwerppatronen, ontwerppatronen zijn sjablonen voor het oplossen van problemen, passend bij verschillende problemen en redelijk compromis sluitend bij de SOLID ontwerpbeginselen, bespaart tijd bij het ontwerpen van oplossingen en verhoogt de kwaliteit van de code.
    • Je hoeft alleen de naam van het vereiste patroon te schrijven, Copilot kan dan een volledig codefragment genereren.
  • Lijst met algoritmen, goede algoritmen zijn hoogwaardige kristallisatie van wijsheid die gebruikt wordt om een klasse van problemen op te lossen, ontwikkelaars moeten het specifieke probleem zelf abstract maken en de gegevens abstract maken om ze in het algoritme in te voeren.
    • Algoritmische code is meestal universeel, je hoeft alleen de algoritmenaam te schrijven, Copilot kan dan algoritmische codefragmenten genereren, en Copilot kan altijd op een slimme manier de gegevensstructuren in de context geschikt toepassen op het algoritme.

Alleen tekstuele suggesties

en zh
GitHub Copilot gebruikt de OpenAI Codex om in realtime code en complete functies voor te stellen, rechtstreeks uit je editor. GitHub Copilot gebruikt de OpenAI Codex om in realtime code en complete functies voor te stellen, rechtstreeks uit je editor.
Getraind op miljarden regels code, verandert GitHub Copilot natuurlijke taal prompts in coderingsuggesties in tientallen talen. Getraind op miljarden regels code, verandert GitHub Copilot natuurlijke taal prompts in coderingsuggesties in tientallen talen.
Vlieg niet alleen. Ontwikkelaars over de hele wereld gebruiken GitHub Copilot om sneller te coderen, zich te richten op businesslogica in plaats van boilerplate, en het belangrijkste te doen: het bouwen van uitstekende software. Vlieg niet alleen. Ontwikkelaars over de hele wereld gebruiken GitHub Copilot om sneller te coderen, zich te richten op businesslogica in plaats van boilerplate, en het belangrijkste te doen: het bouwen van uitstekende software.
Focus op het oplossen van grotere problemen. Besteed minder tijd aan het maken van boilerplate en herhalende codepatronen, en meer tijd aan wat belangrijk is: het bouwen van uitstekende software. Schrijf een commentaar dat de logica beschrijft die je wilt en GitHub Copilot zal onmiddellijk suggesties geven om de oplossing te implementeren. Focus op het oplossen van grotere problemen. Besteed minder tijd aan het maken van boilerplate en herhalende codepatronen, en meer tijd aan wat belangrijk is: het bouwen van uitstekende software. Schrijf een commentaar dat de logica beschrijft die je wilt en GitHub Copilot zal onmiddellijk suggesties geven om de oplossing te implementeren.
Krijg op AI-gebaseerde suggesties, speciaal voor jou. GitHub Copilot deelt aanbevelingen op basis van de context en stijlconventies van het project. Doorloop snel regels code, volledige functievoorstel en beslis welke je accepteert, afwijst of bewerkt. Krijg op AI-gebaseerde suggesties, speciaal voor jou. GitHub Copilot deelt aanbevelingen op basis van de context en stijlconventies van het project. Doorloop snel regels code, volledige functievoorstel en beslis welke je accepteert, afwijst of bewerkt.
Code met vertrouwen in onbekend terrein. Of je nu werkt in een nieuwe taal of framework, of gewoon leert programmeren, GitHub Copilot kan je helpen de weg te vinden. Behandel een bug, of leer hoe je een nieuw framework gebruikt zonder de meeste tijd te besteden aan het doorzoeken van documentatie of het zoeken op het web. Code met vertrouwen in onbekend terrein. Of je nu werkt in een nieuwe taal of framework, of gewoon leert programmeren, GitHub Copilot kan je helpen de weg te vinden. Behandel een bug, of leer hoe je een nieuw framework gebruikt zonder de meeste tijd te besteden aan het doorzoeken van documentatie of het zoeken op het web.

Deze vertalingen worden allemaal gegenereerd door Copilot, het is niet zeker of deze suggesties zijn gebaseerd op modelgeneratie of op vertaalgedrag. In feite kan alles wat je in de en kolom van de tabel schrijft, worden vertaald (gegenereerd) door Copilot naar de inhoud in de zh kolom.

picture 21

Instellingen

Client instellingen

Instelling Beschrijving Opmerkingen
temperature Sampletemperatuur 0.0 - 1.0, 0.0 genereert de meest voorkomende codefragmenten, 1.0 genereert de minst voorkomende, meest willekeurige codefragmenten
length Maximale lengte van gegenereerde codesuggesties Standaard 500
inlineSuggestCount Aantal gegenereerde inline suggesties Standaard 3
listCount Aantal gegenereerde suggesties Standaard 10
top_p Toon de top N suggesties op basis van prioriteit Standaard toont alle mogelijke suggesties

Individuele accountinstellingen hebben twee instellingen, een gerelateerd aan copyright en een gerelateerd aan privacy.

  • Of open source code gebruiken om suggesties te geven, voornamelijk om copyrightproblemen in de door Copilot gegenereerde codefragmenten te vermijden en beperkingen van open source licenties te voorkomen.
  • Of het toestaan van het gebruik van persoonlijke codefragmenten om het product te verbeteren, om privacylekken te voorkomen.

Gegevensbeveiliging

Gegevensverzameling van Copilot

  • Commerciële versie
    • Gebruiksgegevens, mogelijk met persoonlijke gegevens
    • Verzamelt codefragmenten, werpt ze direct weg na het geven van suggesties, geen codefragmenten behouden
    • Gegevensdeling, GitHub, Microsoft, OpenAI
  • Persoonlijke versie
    • Gebruiksgegevens, mogelijk met persoonlijke gegevens
    • Verzamelt codefragmenten, behoudt of gooit ze weg op basis van de persoonlijke telemetry-instellingen na het geven van suggesties
    • Codefragmenten omvatten: code die momenteel wordt bewerkt, bijbehorende bestanden, bestanden die in de IDE zijn geopend, bibliotheekadressen, bestandspaden
    • Gegevensdeling, GitHub, Microsoft, OpenAI
    • Codegegevensbescherming, 1. Versleuteling. 2. Delen van GitHub/OpenAI die betrokken zijn bij het Copilot-team kunnen zien. 3. Toegang vereist op rollen gebaseerde toegangscontrole en multi-factor verificatie
    • Voorkom dat codefragmenten worden gebruikt (behouden of getraind), 1. Instellingen 2. Neem contact op met Copilot-team
    • Wordt privécode gebruikt? Nee.
    • Zullen persoonlijke gegevens (naam, geboortedatum, etc.) worden uitgevoerd? Zeldzaam, nog steeds aan het verbeteren.
  • Gedetailleerde privacyverklaring

Veelgestelde vragen

  • De trainingsgegevens van Copilot komen van openbare bibliotheken op Github.
  • Is de code die Copilot schrijft perfect? Niet noodzakelijk.
  • Kan code worden geschreven voor nieuw platforms? Beperkte mogelijkheden.
  • Hoe gebruik je Copilot beter? Code opsplitsen in kleine functies, functiefunctionaliteit en input/output beschrijven in natuurlijke taal, gebruik variabele- en functienamen met specifieke betekenis.
  • Zullen bugs in de door Copilot gegenereerde code voorkomen? Natuurlijk niet te vermijden.
  • Kan de door Copilot gegenereerde code direct worden gebruikt? Niet noodzakelijk, soms moet deze worden aangepast.
  • Kan de door Copilot gegenereerde code worden gebruikt voor commerciële projecten? Ja.
    • Behoort de door Copilot gegenereerde code tot het intellectuele eigendom van Copilot? Nee.
    • Kopieert Copilot code uit de trainingsset? Copilot kopieert geen code, zeer lage kans dat meer dan 150 regels code overeenkomen met de trainingsset, dit gebeurt in de volgende twee situaties:
      • Bij weinig contextuele informatie
      • Is een algemene oplossing voor een probleem
    • Hoe voorkom je herhaling met openbare code, stel filter in
      picture 22
  • Hoe gebruik je de door Copilot gegenereerde code op de juiste manier? 1. Test/inspecteer zelf de gegenereerde code; 2. Compileer of voer de gegenereerde code niet automatisch uit voordat je het inspecteert.
  • Heeft Copilot hetzelfde prestatieniveau in elke natuurlijke taal? Beste prestaties zijn in het Engels.
  • Zal Copilot beledigende inhoud genereren? Er is filtering, maar het is niet uitgesloten dat het soms voorkomt.