Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez az útmutató bemutatja, hogyan használható GitHub Copilot a Hilo-mintaprojekt modernizálására a legújabb MSVC buildeszközökre való frissítéssel. A modernizálási ügynökkel azonosíthatja és megoldhatja a problémákat, majd a Hibakereső ügynökkel kijavíthat egy futtatókörnyezeti problémát.
Tudnivalók a Hilo-ról
A Hilo a Microsoft által 2012-ben kifejlesztett mintaprojekt volt, amely a "modern" C++, XAML és a Windows-futtatókörnyezet használatával Windows 8 célzó alkalmazásokat hozott létre. A Hilo alkalmazás egy fényképböngésző alkalmazás, amely széljegyzeteket és megosztási funkciókat is tartalmaz. 2015-ben leállítottuk a minta frissítését, és archiváltuk ennek a mintának a forráskódját, valamint a VCSamples GitHub adattárban lévő többi korábban szállított C++ mintát.
Modernizációs kihívások
Az ügynök számos hibát észlel és megold a Hilo újabb MSVC Build Tools-verzió használatára való frissítése után. Az alábbiakban a Microsoft C++ (MSVC) buildelési eszközök 14.51-es verziójával kapcsolatos problémákat találja.
- Az
std::tr1::is_base_ofosztálysablon több helyen is használható, de már nem érhető el az MSVC C++ standard kódtárában, mivelis_base_ofaz osztálysablon a teljes szabvány része lett. Ez egy blokkolási hiba. - A
ID2D1Factory::GetDesktopDpifüggvény elavult. - A
[uuid(_string_)]típusok ATL-attribútumainak szintaxisa elavult. - Van egy projekt, amelyet a Beállítási segéd nem frissít. Ha nincs telepítve a v120 MSVC Build Tools (ami valószínűleg), akkor ez egy blokkolási hiba.
- Az ablakkezelő kódban van egy mutató csonkolás, amely futásidejű memóriahozzáférés-kivételt okoz.
Van néhány további figyelmeztetés, amelyek nem feltétlenül kapcsolódnak a frissítéshez, de az ügynök opcionálisan ki tudja javítani. Ezek a figyelmeztetések a következők:
- A több bájtos karaktersztringek és a széles karaktersztringek körül megjelenő figyelmeztetések szűkítése.
- Elírás egy egyéni összeállítási lépés kimeneti fájljának nevében.
Setup
Fejlesztői eszközök telepítése
A bemutató végrehajtásához követnie kell a GitHub Copilot C++-hoz készült modernizációs ügynök telepítési útmutatóját.
Az adattár klónozása
Nyissa meg a Visual Studio és a Start ablakban válassza a Adattár hozzáadása lehetőséget. Ha a Kezdőablak nem jelent meg, a Fájl>Kezdőablak menüponton keresztül megnyithatja.
Az adattár helyéhez írja be a következőt: https://github.com/microsoft/VCSamples.git. Válassza ki a megfelelő elérési utat a rendszeren az adattár klónozásához, majd kattintson a Klónozás gombra
A frissítés indítása
Töltse be a Hilo.sln fájlt a Visual Studio-ban
Az adattár klónozása után töltse be a megoldásfájlt a <repo-root>/VC2013Samples/Hilo/C++/Hilo.sln. Ebben az útmutatóban a Visual Studio 2013-hoz mellékelt verziót használjuk.
Projektfájlok frissítése a Beállítási segéd használatával
Ha a v120 eszközök nincsenek telepítve, a Visual Studio-nak el kell indítania a Telepítési segéd ablakát, hogy segítsen kezelni a hiányzó összetevőket. Amikor megjelenik ez az ablak, válassza a Mind újracélzása lehetőséget, majd kattintson az Alkalmaz gombra. Ha az ablak nem jelenik meg, a fájlmenüben a Project>Retarget megoldásra kattintva nyithatja meg.
Indítsa el a Copilot korszerűsítési ügynököt
Miután a telepítősegéd újrakezdte a projektet, egy információs sávüzenetet kell kapnia egy hivatkozással a modernizálási ügynök elindításához. A Run GitHub Copilot modernization for C++ hivatkozásra kattintva elindul a frissítési folyamat.
Ha az információs sáv nem jelenik meg, az ügynök elindításához kattintson a jobb gombbal a megoldásra a Megoldáskezelő, majd a Modernize elemre. Ha ezt az útvonalat választja, elindíthatja a frissítést úgy, hogy elküldi a I just updated MSVC Build Tools. Resolve any upgrade issues. kérést Copilot Chat.
Az ügynökkel való együttműködés
Az ügynökkel való interakció a legjobb eredmények elérése érdekében
A .NET modernizálási ügynök ugyanazzal a mögöttes interakciós modellel rendelkezik, mint a C++ ügynök. A Munka a modernizálási ügynökkel .NET dokumentációja részletesen ismerteti az általános mintákat. Ne feledje, hogy a cikkben szereplő példák és forgatókönyvek .NET-specifikusak, és nem vonatkoznak közvetlenül a C++-ra.
A C++-frissítések esetén néhány további tipp segíthet az ügynöknek a jó teljesítményben:
- Legyen konkrét a hatókörrel kapcsolatban. Ahelyett, hogy arra kérné az ügynököt, hogy frissítsen mindent egyszerre, mondja el, hogy mely projektekre, kódtárakra vagy diagnosztikákra összpontosítson. Például: "A C4996 elavulással kapcsolatos figyelmeztetések javítása a
NetworkClientprojektben". - Ismertesse az ügynök által kijavítandó diagnosztikát. Ha ismeri az eszközkészlet-frissítés által bevezetett konkrét figyelmeztetési vagy hibakódokat, mondja el előre az ügynöknek. Ezek a további utasítások segítenek az ügynöknek rangsorolni és elkerülni a nem kapcsolódó problémákra fordított időt.
- Győződjön meg arról, hogy a C/C++ kódszerkesztő eszközök engedélyezve vannak. Mielőtt elkezdené, ellenőrizze, hogy a szükséges eszközök elérhetők-e a beállításban. További részletekért tekintse meg a C/C++ kódszerkesztő eszközöket.
- Kódolási konvenciók kódolása egyéni utasítások használatával. Az egyéni utasításokban kódolhatja az olyan irányelveket, mint az elnevezési konvenciók, az előnyben részesített API-k vagy az elkerülendő minták. Az ügynök a frissítés során felolvassa és követi ezeket az utasításokat. Hasznos C++-példák közé tartoznak az olyan konvenciók, mint "Ahol a típus egyértelmű, részesítsd előnyben a(z)
autohasználatát" és "Kövesd a Rule of Zero elvét (vagy a Rule of Three/Five szabályt, ahol az erőforrások birtoklása ezt megköveteli)."
Várt viselkedések
Megjegyzés:
Az LLM-alapú AI-ügynökök jellegéből adódóan az ügynök által végrehajtott lépések és az általa előállított kimenet eltérhetnek az itt láthatótól.
Előzetes értékelés
Az ügynök először meghatározza, hogy milyen környezetben fut, például a forrásvezérlő rendszert, és hogy megértse a célját. Esetünkben azt észleli, hogy a legújabb MSVC használatára próbálja frissíteni a projektet, és inicializálja a megfelelő forgatókönyvet. Létrehoz egy scenario.md fájlt és egy scenario-instructions.md fájlt, amely metaadatokat tartalmaz a forgatókönyvről.
Ezek a fájlok olyan információkat tartalmaznak, mint például, hogy az ügynöknek automatikus vagy irányított módban kell-e működnie, mi a véglegesítések létrehozásának stratégiája, és egyéb információkat, amelyek befolyásolják az ügynök működését. Ha később az ügynök működése során bármilyen beállítást kifejez, az ügynök hozzáadhatja ezeket a beállításokat a scenario-instructions.md fájlhoz.
Assessment
Az inicializálás után az ügynök elvégzi a projekt értékelését a projekt tiszta újraépítésével és a build kimenetének hibák és figyelmeztetések vizsgálatával. Ennek az információnak és az adattárból gyűjtött környezetnek a használatával létrehoz egy assessment.md fájlt, amely leírja a talált problémákat, és hogy a frissítési feladat hatókörén belülinek vagy hatókörön kívülinek tekinti-e őket.
Ha az ügynök irányított módban működik, az ügynök itt leáll, és az értékelés áttekintését kéri. Végezze el a kívánt módosításokat az ügynök utasításával vagy a Markdown-fájl közvetlen szerkesztésével, majd lépjen tovább a Tervezés szakaszra. Ha az ügynök automatikus módban működik, az ügynök automatikusan folytatja a következő szakaszt. Ha módosítani szeretne valamit, a Mégse gomb megnyomásával le kell állítania az ügynököt, el kell végeznie a módosításokat, majd a Copilot csevegőablakában a "Resume" parancs beírásával újra kell indítania az ügynököt.
Az értékelés számos, az útmutatóban korábban említett problémát azonosít. Néhány probléma csak később jelenik meg, mivel a meglévő hibák elrejtik őket. Ne aggódjon, később felfedezik őket. Ha azt szeretné, hogy az ügynök megálljon, hogy kérje az Ön jóváhagyását a későn felfedezett problémák esetén, ezeket az utasításokat megadhatja a scenario-instructions.md fájlban.
Planning
Miután az ügynök megkezdte a tervezési szakaszt, részletesebb elemzést végez a hatókörön belüli problémákról, és lehetséges megoldásokat javasol egy létrehozott plan.md fájlban. Emellett létrehoz egy tasks.md fájlt, amely strukturáltabb lépéseket és utasításokat biztosít a terv végrehajtásához.
Az Értékeléshez hasonlóan az ügynök működése attól is függ, hogy irányított vagy automatikus módban működik-e. Ha irányított módban fut, az ügynök lehetőséget ad arra, hogy bizonyos módokon javítsa ki a problémákat, vagy akár kérje meg, hogy alternatív lehetőségeket kínáljon a kompromisszumok részletesebb leírásával. Más korlátozásokat is megadhat, például kódolási konvenciók vagy speciális ellenőrzési lépések bizonyos problémák esetén.
Execution
A terv jóváhagyása után (vagy ha a tervezés automatikus módban befejeződött), az ügynök a Végrehajtási fázisba kerül. Itt elkezdi kezelni az előtte lévő feladatokat, alkalmazkodva a végrehajtás során felderített új információkhoz. Gondos megfigyeléssel láthatja, hogy az ügynök felderíti a korábban rejtett problémákat, és ennek megfelelően módosítja a tervét.
A végrehajtási szakasz végeredménye az adattárban végrehajtott véglegesítések sorozata, amely megoldja a hatókörön belüli problémákat, és egy projekt, amely most már sikeresen felépíthető. A tiszta fordítás azonban csak az egyik lépés a projekt frissítéséhez. Emellett megfelelően kell futnia.
Futtatókörnyezeti problémák megoldása a Hibakereső ügynökkel
Indítsa el a böngészőt
A Megoldáskezelő ablakban kattintson jobb gombbal a Browser projektre, majd kattintson a Beállítás indítóprojektként parancsra. Ezután indítsa el a Hilo Browser hibakereső munkamenetét az F5 billentyű lenyomásával, vagy válassza a Hibakeresés>indítása parancsot a fájlmenüben.
A hibakeresési munkamenetnek szinte azonnal meg kell szakítania egy nem kezelt memóriahozzáférés-kivételt.
Memória olvasási hozzáférési kivételének vizsgálata
A Hibakereső ügynökkel elemezzük ezt a kivételt, és implementálunk egy javítást. Kattintson a Analyze Copilot gombra a kivételinformációs ablakban a Hibakereső ügynök elindításához.
A Hibakereső ügynök hibakeresési és programállapot-információkat használ a futtatókörnyezeti hibák kiváltó okának meghatározásához, majd elemzi a forráskódot egy megoldás implementálásához. Ebben az esetben az ügynök megállapítja, hogy az érvénytelen memóriahozzáférést egy helytelen típuskonverziós művelet okozza, amely egy 64 bites mutatót 32 bitesre csonkított. Ez a mutató érvénytelen, és érvénytelen memóriahelyre mutat, ami kivételt okoz. Egy másik módszert javasol a megfelelő típus lekérésére, és elkerüli a csonkolást.
Módosítások alkalmazása
Fogadja el a javasolt módosításokat, állítsa le a hibakeresési munkamenetet a Shift + F5* billentyűkombináció lenyomásával, majd az F5 billentyű lenyomásával indítsa el az új munkamenetet. A projekt újrafordításra kerül a módosítással, és Visual Studio elindítja a frissített alkalmazást. Ekkor megjelenik a Hilo Browser ablak.
Ha időt tölt az alkalmazás felfedezésével, további futtatókörnyezeti problémákat fedezhet fel. A többi problémát gyakorlatként hagyjuk az olvasó számára. Ne feledje, hogy az új ügynöki eszközökkel gyorsabban érheti el a célokat.
Összefoglalás
Ez az útmutató azt mutatta be, hogy GitHub Copilot ügynökök hogyan gyorsíthatják jelentősen a régebbi C++ projektek modernizálását. A modernizálási ügynök és a hibakereső ügynök együttműködve egyszerűsítheti a frissítési folyamatot a kezdeti értékeléstől a futásidejű ellenőrzésig.
Legfontosabb előnyök
- Automatikus problémaészlelés: Az ügynökök szisztematikusan azonosítják a frissítésekből eredő kompatibilitási változásokat, elavulásokat és kompatibilitási problémákat.
- Intelligens megoldások: Ahelyett, hogy manuális javításokat igényelnek, az ügynökök elemezik a kódkörnyezetet, és a kódbázisra szabott megfelelő megoldásokat javasolnak.
- Hatékonyság: Ami napokig vagy hetekig tarthat, a manuális munka órákban fejeződik be, és az ügynök a buildelési hibákat és a futásidejű problémákat is kezeli.
- Irányított vagy automatikus üzemmódok: Válasszon a gyakorlati útmutatás vagy a teljes mértékben automatizált végrehajtás között a kényelmi szint és a projektkövetelmények alapján.
- Tanulás és alkalmazkodás: Az ügynökök felderítik a rejtett problémákat, miközben haladnak, és ennek megfelelően módosítják megközelítésüket, biztosítva az átfogó lefedettséget.