Blogg

Här finns tekniska artiklar, presentationer och nyheter om arkitektur och systemutveckling. Håll dig uppdaterad, följ oss på Twitter

Callista medarbetare Jan Västernäs

GitHub Copilot - få kodsnippets serverade till dig i utvecklingsmiljön

// Jan Västernäs

Björn Gylling du har lekt lite med GitHubs Copilot?
Ja det stämmer.

Vad är det?
En applikation som ger dig förslag på kod. Koden genereras baserat på något som finns incheckat på GitHub. Och där finns ju ganska mycket kod att välja på. Github uttrycker det som att det är en AI-applikation som använder GitHubs publika repon som träningsdata. Just nu är det en “technical preview” där man måste bli inbjuden, man skriver upp sig på deras hemsidan sen får man ett mail med en inbjudan, det tog några veckor i mitt fall.

Hur gör man för att använde GitHub Copilot? Den finns som en plugin till VS Code, men nyligen har det börjat komma stöd för andra editors, bland annat IntelliJ som ju många på Callista använder. När pluginet är installerat så börjar Copilot ge förslag på kod direkt i din editor ungefär som en smartare autocomplete.

Ser du några fördelar med den här tekniken?
Ofta när man kodar så kikar man på exempel och dokumentation på olika hemsidor när man använder API:er och olika bibliotek. Detta brukar innebära flitigt googlade och massor av flikar i webbläsaren. Det är ju betydligt enklare att kunna få ett förslag utan att behöva lämna utvecklingsmiljön. Dessutom blir ju kodförslaget anpassat till kontextet i din kod, typer och variabler osv.

Känner applikationen av vilket programmeringsspråk du använder?
Ja det gör den. Det är ju en “technical preview” och man säger att Python, JavaScript, TypeScript, Ruby, Java, and Go har ett bra stöd. Men det fungerar även i andra språk, även om förslagen kanske inte blir riktigt lika “smarta” då. Jag har t.ex. provat det lite kort i Rust.

Hur kan den förstå vad du är ute efter?
Man börjar med att skriva ett namn på en metod/procedur eller annan konstruktion i språket. Man kan även skriva en kommentar för att ge lite mer hintar om vad man vill att koden ska utföra. Desto mer kontext det finns desto bättre brukar förslaget bli.

Hur fungerar det tycker du?
Har inte hunnit testa så mycket ännu, några gånger blir det ganska vettigt, andra gånger lyckades det inte alls. Men man kan misstänka att eftersom det är AI-baserat så lär det bli bättre över tiden. Sen förbättras plugin:et också kontinuerligt, nyligen kom det ju stöd för fler editors te.x. Jag kommer att pröva lite mer framöver och då får vi se vad jag tycker.

Ett exempel från Copilots site:

Innebär detta att vem som helst kan bli utvecklare nu?
Nej det tror jag inte. Man måste ju förstå hur man skriver för att få fram det man vill. Och man måste ju förstå den kod som kommer som förslag för att kunna anpassa den till sina specifika behov och applikationen i stort samt fixa eventuella buggar och hantera hörnfall. Att den föreslagna koden skulle vara 100% lösning på aktuellt problem är nog en utopi.

Hur är det med tester?
Man kan få Copilot att föreslå tester till den kod man skrivit.

Finns det farhågor om att GitHub delar kod man själv checkat in med andra utvecklare?
Om det är ett öppet repo så finns det ju ändå tillgängligt för den som vill. Men man säger att Copilot kommer inte att kopiera kod rakt av utan snarare generera egen unik kod inspirerad av träningsdata. Det skall bara vara 0.1% av fallen där det kan finnas snippets som går att härleda till incheckad kod. Är det ett stängt repo så skall det inte utnyttjas. Men man skall ju i alla fall aldrig checka in saker som lösenord och sånt på GitHub, det är ju ett grundläggande misstag.

Nåt mer att säga?
Känns som en väldigt spännande teknik som potentiellt kan hjälpa oss mycket i framtiden.

https://copilot.github.com/

Tack för att du läser Callistas blogg.
Hjälp oss att nå ut med information genom att dela nyheter och artiklar i ditt nätverk.

Kommentarer