Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här genomgången visar hur du använder GitHub Copilot för att modernisera Hilo-exempelprojektet genom att uppgradera det till de senaste MSVC-byggverktygen. Du använder moderniseringsagenten för att identifiera och lösa problem och sedan använda felsökningsagenten för att åtgärda ett körningsproblem.
Om Hilo
Hilo var ett exempelprojekt som utvecklades av Microsoft 2012 för att demonstrera skapandet av program för Windows 8 med hjälp av "modern" C++, XAML och Windows Runtime. Hilo-programmet är ett fotobläddringsprogram som också innehåller antecknings- och delningsfunktioner. Vi slutade uppdatera exemplet 2015 och arkiverade källkoden för det här exemplet och andra tidigare levererade C++-exempel i VCSamples GitHub lagringsplats.
Moderniseringsutmaningar
Det finns flera problem som agenten identifierar och löser efter uppgraderingen av Hilo för att använda en nyare VERSION av MSVC Build Tools. Här är problemen när du skapar med Microsoft C++ (MSVC) Build Tools version 14.51.
- Klassmallen
std::tr1::is_base_ofanvänds på flera platser, men är inte längre tillgänglig i MSVC:s C++-standardbibliotek eftersomis_base_ofklassmallen befordrades till en del av den fullständiga standarden. Det här är ett blockeringsfel. - Funktionen
ID2D1Factory::GetDesktopDpiär inaktuell. - Syntaxen
[uuid(_string_)]för ATL-attribut för typer är inaktuell. - Det finns ett projekt som installationsassistenten inte kan uppgradera. Om du inte har v120 MSVC Build Tools installerat (vilket är troligt) är detta ett blockerande fel.
- Det finns en pekaretrunkering i fönsterhanteringskoden som orsakar ett undantag för minnesåtkomst för körning.
Det finns några andra varningar som kanske inte är strikt relaterade till uppgraderingen, men som agenten kan åtgärda. Dessa varningar omfattar:
- Begränsa varningar runt teckensträngar med flera byte och breda teckensträngar.
- Ett skrivfel i namnet på en utdatafil i ett anpassat byggsteg.
Inställningar
Installera utvecklingsverktyg
För att slutföra den här genomgången måste du följa installationsanvisningarna för GitHub Copilot moderniseringsagenten för C++.
Klona lagringsplatsen
Öppna Visual Studio och välj Klona en lagringsplats i Startfönstret. Om startfönstret inte visas kan du öppna det via startfönstret för filen>.
För lagringsplats anger du: https://github.com/microsoft/VCSamples.git. Välj en passande sökväg på ditt system att klona lagringsplatsen till och klicka på knappen Klona
Starta uppgraderingen
Öppna Hilo.sln i Visual Studio
När du har klonat repot öppnar du lösningsfilen på <repo-root>/VC2013Samples/Hilo/C++/Hilo.sln. Vi använder den version som levererades med Visual Studio 2013 för den här genomgången.
Använd installationsassistenten för att uppgradera projektfiler
Om du inte har installerat v120-verktygen bör Visual Studio starta installationsassistentfönstret för att vägleda dig genom att hantera de komponenter som saknas. När du ser det här fönstret bör du välja Ändra mål för alla och klicka på Verkställ. Om fönstret inte visas kan du öppna det från Arkiv-menyn genom att klicka på Project>Retarget solution.
Starta Copilot-moderniseringsagenten
När installationsassistenten har gjort om projektet bör du få ett meddelande i informationsfältet med en länk för att starta moderniseringsagenten. Om du klickar på länken Run GitHub Copilot modernization for C++ startas uppgraderingsprocessen.
Om informationsfältet inte visas kan du starta agenten genom att högerklicka på lösningen i Prieskumník riešení och klicka på Modernize. Om du går den vägen kan du starta uppgraderingen genom att skicka uppmaningen I just updated MSVC Build Tools. Resolve any upgrade issues. till Copilot Chat.
Arbeta med agenten
Så här interagerar du med agenten för att få bästa resultat
.NET moderniseringsagenten delar samma underliggande interaktionsmodell som C++-agenten. Dokumentationen Arbeta med moderniseringsagenten om .NET beskriver de generella mönstren i detalj. Tänk på att exemplen och scenarierna i den artikeln är .NET specifika och inte gäller direkt för C++.
För C++-uppgraderingar kan några fler tips hjälpa agenten att prestera bra:
- Var specifik om omfång. I stället för att be agenten att uppgradera allt på en gång kan du berätta vilka projekt, bibliotek eller diagnostik som ska fokuseras på. Till exempel: "Åtgärda C4996-utfasningsvarningarna i
NetworkClient-projektet." - Beskriv diagnostiken som du förväntar dig att agenten ska åtgärda. Om du känner till de specifika varnings- eller felkoderna som introducerades vid uppgraderingen av verktygsuppsättningen berättar du för agenten i förväg. De här ytterligare instruktionerna hjälper agenten att prioritera och undviker att lägga tid på orelaterade problem.
- Kontrollera att C/C++-kodredigeringsverktyg är aktiverade. Kontrollera att de verktyg som krävs är tillgängliga i konfigurationen innan du börjar. Mer information finns i C/C++-kodredigeringsverktyg.
- Koda kodningskonventioner med hjälp av anpassade instruktioner. Koda riktlinjer som namngivningskonventioner, föredragna API:er eller mönster att undvika i anpassade instruktioner. Agenten läser och följer dessa instruktioner under uppgraderingen. Användbara C++-exempel inkluderar konventioner som "Föredra
autovar typen är uppenbar" och "Följ regeln för noll (eller regeln om tre/fem där resursägarskapet kräver det)."
Förväntade beteenden
Note
På grund av typen av LLM-baserade AI-agenter kan stegen som agenten vidtar och de utdata som genereras skilja sig från vad som visas här.
Förutvärdering
Agenten avgör först vilken miljö den körs i, till exempel källkontrollsystemet, och för att förstå dess mål. I vårt fall identifierar den att du försöker uppgradera projektet för att använda den senaste MSVC och initierar lämpligt scenario. Den skapar en scenario.md fil och en scenario-instructions.md fil som ska innehålla metadata om scenariot.
Dessa filer innehåller information som om agenten ska fungera i automatiskt eller guidat läge, vad strategin för att genomföra incheckningar är och annan information som påverkar hur agenten ska fortsätta. Om du uttrycker några inställningar senare under agentens drift kan agenten lägga till dessa inställningar i scenario-instructions.md filen.
Assessment
Efter initieringen gör agenten en utvärdering av projektet genom att göra en ren ombyggnad av projektet och inspektera build-utdata efter fel och varningar. Med hjälp av den informationen och kontexten som agenten samlar in från lagringsplatsen skapar den en assessment.md fil som beskriver de problem som hittades och huruvida den anser att de är inom omfånget eller utanför omfånget för uppgraderingsuppgiften.
Om agenten körs i guidat läge stannar agenten här och begär din granskning av utvärderingen. Gör önskade ändringar genom att fråga agenten eller redigera Markdown-filen direkt och sedan fortsätta till planeringssteget . Om agenten körs i automatiskt läge fortsätter agenten till nästa steg automatiskt. Om du vill ändra något måste du stoppa agenten genom att trycka på knappen Avbryt, göra ändringarna och återuppta agenten genom att skriva kommandotolken "Återuppta" i Copilot chattfönstret.
Utvärderingen identifierar flera av de problem som nämnts tidigare i genomgången. Vissa problem visas inte förrän senare eftersom de är dolda av befintliga fel. Oroa dig inte, de upptäcks senare. Om du vill att agenten ska pausa för att få ditt godkännande för eventuella problem som upptäckts sent kan du ange dessa instruktioner i scenario-instructions.md filen.
Planering
När agenten startar planeringssteget gör den en djupare analys av problemen inom omfånget och föreslår möjliga lösningar i en genererad plan.md fil. Den genererar också en tasks.md fil som innehåller mer strukturerade steg och instruktioner för att köra planen.
Liksom vid utvärdering beror vad agenten gör på om den körs i läget Guidat eller Automatiskt. Om du kör i guidat läge ger agenten dig möjlighet att dirigera den för att åtgärda problem på vissa sätt eller till och med be den att komma med alternativa alternativ med mer detaljerade beskrivningar av kompromisser. Du kan också ange andra begränsningar, till exempel kodningskonventioner eller särskilda valideringssteg för vissa problem.
Execution
När du har godkänt planen (eller när planeringen har slutförts i automatiskt läge) flyttas agenten till körningssteget. Här börjar den hantera de uppgifter som den har framför sig och anpassar sig till ny information som identifieras under körningen. Med noggrann observation ser du att agenten identifierar tidigare dolda problem och justerar planen i enlighet med detta.
Slutresultatet av genomförandefasen är en serie incheckningar i ditt kodförråd som löser de problem som ingår i omfattningen, samt ett projekt som nu kan byggas utan fel. Men en ren kompilering är bara ett av stegen för att uppgradera projektet. Den måste också fungera korrekt.
Använd Debugger-agenten för att lösa problem vid körning
Starta webbläsaren
I Prieskumník riešení högerklickar du på projektet Browser och klickar på Uppsättning som startprojekt. Starta därefter en felsökningssession för Hilo Browser genom att trycka på F5 eller välja Felsöka>Starta felsökning från Arkiv-menyn.
Felsökningssessionen bör nästan omedelbart brytas vid ett ohanterat undantag för minnesåtkomst.
Granska undantag för minnesläsningsåtkomst
Vi ska använda felsökningsagenten för att analysera det här undantaget och implementera en korrigering. Klicka på knappen Analyze med Copilot i fönstret med undantagsinformation för att starta felsökningsagenten.
Debuggeragenten använder felsöknings- och programtillståndsinformation för att fastställa grundorsaken till körfel och analyserar sedan källkoden för att ta fram en lösning. I det här fallet identifierar agenten att den ogiltiga minnesåtkomsten beror på en felaktig gjutningsåtgärd som trunkerade en 64-bitars pekare till endast 32 bitar. Pekaren är nu ogiltig och pekar på en ogiltig minnesplats, vilket orsakar undantaget. Den föreslår en annan metod för att få rätt typ och undviker trunkeringen.
Tillämpa ändringar
Acceptera de ändringar som föreslås, stoppa felsökningssessionen genom att trycka på Skift + F5*, och starta sedan en ny session genom att trycka på F5. Projektet kompileras om med ändringen och Visual Studio startar det uppdaterade programmet. Nu bör fönstret Hilo Browser visas.
Om du tillbringar tid med att utforska programmet kan du upptäcka fler körningsproblem. Vi lämnar andra problem som övningar för läsaren. Kom bara ihåg att använda dina nya agentiska verktyg för att komma till slutmålet snabbare.
Sammanfattning
Den här genomgången visade hur GitHub Copilot agenter avsevärt kan påskynda moderniseringen av äldre C++-projekt. Moderniseringsagenten och felsökningsagenten kan samarbeta för att effektivisera uppgraderingsprocessen från den första utvärderingen till körningsverifiering.
Viktiga fördelar
- Automatiserad problemidentifiering: Agenterna identifierar systematiskt kompatibilitetsbrytande ändringar, föråldrade funktioner och kompatibilitetsproblem som uppstår vid uppgraderingar.
- Intelligenta lösningar: I stället för att kräva manuella korrigeringar analyserar agenterna kodkontexten och föreslår lämpliga lösningar som är skräddarsydda för din kodbas.
- Effektivitet: Det som kan ta dagar eller veckor av manuellt arbete slutförs i timmar, där agenten hanterar både byggfel och körningsproblem.
- Guidade eller automatiska lägen: Välj mellan praktisk vägledning eller helt automatiserad körning baserat på din komfortnivå och dina projektkrav.
- Inlärning och anpassning: Agenterna upptäcker dolda problem när de utvecklas och justerar sin strategi i enlighet med detta, vilket säkerställer omfattande täckning.