Egység 4 / 12

Kódfelülvizsgálat, refaktorálás és műszaki adósság

Nyereség:

  • Képes a mesterséges intelligencia második szemként való használatára a kód áttekintésében az olvashatóság, a logika és a biztonság érdekében
  • Képes megtervezni az AI-támogatással az átalakítási lépéseket anélkül, hogy megzavarná az összetett kód viselkedését
  • Lehetőség a mesterséges intelligencia áttekintésének ellenőrzésére és ajánlások szerkesztésére teszteléssel és verzióvezérlési összehasonlítással

A szoftverfejlesztésben a kódot sokkal többet olvassák, mint írják. Egy kódsort egyszer írnak, de hónapok során több tucatszor kiolvassák, módosítják és felépítik. Ezért van az, hogy a kódellenőrzés (valaki más vagy a saját kódjának áttekintése a logika, olvashatóság és biztonság érdekében) és az újrafeldolgozás (a kód szerkezetének javítása a viselkedés megváltoztatása nélkül) a tervezés középpontjában áll. A mesterséges intelligencia erőteljes „második szemmé” válik ehhez a két feladathoz: gyorsan olvashatóságot sugall, rámutat a figyelmen kívül hagyott logikai és biztonsági problémákra, és a nagy átalakítást kisebb biztonságos lépésekre bontja. De van egy kritikus szabály: az átalakításnak nem szabad megváltoztatnia a viselkedést, és ezt csak a tesztelés garantálja.

Ebben az egységben meglátjuk, hogyan lehet strukturált módon használni az AI-t a kód áttekintésére, hogyan lehet bonyolult kódot javítani anélkül, hogy megzavarná a viselkedését, és hogyan kell kezelni a technikai adósságot (gyors, de költséges kóddöntés).

Fogalmak: Technikai adósság: A gyorsaság érdekében ma meghozott kóddöntések, amelyek megnehezítik a karbantartást a jövőben. Kódszag: Olyan minták, amelyek önmagukban nem hibák, hanem problémákat jeleznek (túl hosszú függvények, ismétlődő kód). Regresszió: Amikor egy változás megszakít valamit, ami korábban működött.

AI használata a strukturált kódok áttekintésében

Ha az idő korlátozott, akkor a legmagasabb kockázatú kérdésekre kell összpontosítani. Az automatikus formázó kezeli a formázási problémákat, például a behúzást és a térközt; Emberi figyelmet kell fordítania a logikára, a biztonságra és a szélsőséges viselkedésre. A mesterséges intelligencia felülvizsgálatakor kérjen prioritási listát, ne pedig sima vélemények özönét.

  1. Adja meg a hatókört. Milyen kód, mit kell tenni, milyen kontextusban működik.
  2. Adja meg a prioritási tengelyt. Első a pontosság és biztonság, a második az olvashatóság.
  3. Kérjen konkrét javítást. „Mi a probléma” és „javasolt javítás” minden egyes megállapításnál.
  4. Ön ellenőrzi a megállapításokat. A mesterséges intelligencia hamis pozitív eredményeket is produkál; Minden megállapítást ellenőrizze a kóddal és a teszteléssel.

Strukturált áttekintési prompt: "Vizsgálja meg a következő funkciót, mint egy vezető mérnök. Sorolja fel a megállapításokat fontossági sorrendben, és jelölje meg őket ezekkel a címkékkel: [KRITIKUS] logika/biztonság, [KÖZEPES] éles eset/teljesítmény, [ALACSONY] olvashatóság/név. Minden egyes leletnél: miért kérdezzen, konkrét javítási javaslat. NE HAGYJA KI a formázási problémákat, a kódolás/behúzás].

Biztonsági szempontú áttekintési felszólítás: "Tekintse át ezt a kódot csak biztonsági okokból: a bemeneti ellenőrzés hiánya, a befecskendezés kockázata, az engedélyezés ellenőrzésének hiánya, bizalmas információk kiszivárogtatása, nem biztonságos alapértelmezések. Adjon hozzá egy példa támadási forgatókönyvet minden megállapításhoz. Ha nincs biztonsági probléma, egyértelműen jelezze, hogy "Nem találtam kritikus biztonsági problémát". Kód: [kód]."

Vigyázat: Csak azért, mert a mesterséges intelligencia azt mondja, hogy "nincs probléma", még nem bizonyítja, hogy nincs probléma. A mesterséges intelligencia hamis negatív eredményeket produkálhat; megkerülhet egy valódi biztonsági problémát. A mesterséges intelligencia felülvizsgálata kiegészíti, nem helyettesíti, emberi felülvizsgálatot és biztonsági tesztelést. A biztonsági szempontból kritikus kódban az illetékes mérnök mondja ki a végső szót.

Próba tartósított refaktorálás

A refaktorálás aranyszabálya: először tesztelj, utána változtass. A kód kijavítása előtt olyan teszteket kell végezni, amelyek zárolják az aktuális viselkedést, így azonnal tudni fogja, ha a változás eltör valamit. Ne szegje meg a sorrendet az AI-refaktorálás során.

  1. Tegye próbára a jelenlegi viselkedést. Ellenkező esetben kérje meg az AI-t, hogy készítsen egy „jellemző tesztet” (teszt, amely rögzíti az aktuális viselkedést úgy, ahogy van).
  2. Javítsa meg kis lépésekben. A tesztelésnek minden lépésben zöldnek kell maradnia.
  3. Futtassa minden lépés után. Korán észlelje a regressziót.

Biztonságos refaktorálási terv prompt: "A következő 60 soros függvény túl sokat csinál, és nehezen olvasható. A viselkedésének megváltoztatása nélkül szeretném újrafaktorálni. Először: sorolja fel, milyen tesztesetekre van szükségem a jelenlegi viselkedés zárolásához. Ezután: bontsa fel a refaktorálást apró lépésekre, amelyek mindegyike végrehajtható, amíg a tesztek zöldek. Még ne írja be a kódot. Kód: először adja meg a tervet".

Gyenge felszólítás / Erős felszólítás

GYENGE: "Tegye jobbá ezt a kódot." (Eredmény: nem világos, mit kell javítani; a mesterséges intelligencia tetszőleges változtatásokat hajt végre, a viselkedést csendben változtathatja meg.) STRONG: "Refaktorálja ezt a fizetési számítási függvényt az olvashatóság érdekében. KOSZTÁLY: a viselkedésnek pontosan ugyanaznak kell maradnia, a visszatérési értékek nem változhatnak. Ossza fel a hosszú függvényt értelmes segédfüggvényekre, növelve a varázsszámokat megnevezett konstansokká. Sorolja fel a változásokat tételenként, és magyarázza el az egyes elemek viselkedését.

Az erőteljes felszólítás egyértelműen kimondja, hogy a "viselkedésnek pontosan ugyanolyannak kell maradnia" korlátot és azt, hogy mit kell javítani. E megkötés nélkül a mesterséges intelligencia megváltoztathatja a logikát a „fejlesztés” nevében, és csendes regressziót eredményezhet.

Műszaki adósság kezelése

Megközelítés

Rövid távon

hosszú távon

az adósság figyelmen kívül hagyása

gyors haladás

Karbantartási bénulás, csapat lassulása

mindent átírni

Álló funkció fejlesztés

Bizonytalan hozam, magas kockázat

Mért, teszteléssel védett refaktorálás

kisebb lassulás

Fenntartható sebesség

A legegészségesebb módszer a harmadik: tedd láthatóvá az adósságot (követd nyomon egy listában), kezdd ott, ahol a legjobban fáj, és tesztelj minden javítást. A mesterséges intelligencia jó segítség az adósságtételek azonosításában és rangsorolásában, de hogy melyik tartozást kell fizetni, az üzleti döntés.

Mini tokok

1. eset – Csendes regresszió. A fejlesztő azt mondja az AI-nak, hogy „egyszerűsítse ezt a funkciót”; Az AI hibásan fordít le egy feltételt, és a visszatérési számítás megszakad. Mivel nincs tesztelés, a hiba 3 hét múlva jelentkezik ügyfélpanasz esetén. A csapat ugyanezt a munkát úgy végzi el, hogy először egy jellemzési tesztet ír, és az első futtatáskor egy piros teszttel észleli a hibát.

2. eset – Hasznos második szem. A kód áttekintése során az AI rájön, hogy a felhasználói jogosultságot csak a felületen ellenőrzi, a szerveren nem. Ez egy jogosulatlan hozzáférésű biztonsági rés. A mérnök hozzáadja a szerveroldali jogosultság-ellenőrzést; Az AI-vizsgálat megakadályozza a tényleges biztonsági incidenst.

3. eset – Hamis pozitív. Az AI azt mondja, hogy "ez a változó soha nem használatos, törölje"; Azonban indirekt módon, változó reflexiós mechanizmuson keresztül használják. Ha a mérnök nem ellenőrzi a javaslatot a teszt alapján, akkor az törlődik, és futásidejű hiba lép fel. Minden AI megállapítást meg kell erősíteni a végrehajtás előtt.

Gyakori hibák

  • Refaktorálás tesztelés nélkül. Már nincs semmi, ami biztosítaná a viselkedés megőrzését.
  • Az AI megállapításainak alkalmazása azok érvényesítése nélkül. Hamis pozitív és álnegatív is előfordul.
  • Emberi idő pazarlása formátum problémákra. Az automatizált eszközökkel megoldható feladatokra való összpontosítás beárnyékolja a valós kockázatokat.
  • A „Nincs probléma” választ garanciának tekintve. Az AI megkerülheti a sebezhetőséget; emberi felülvizsgálat szükséges.
  • Megpróbálja egyben törleszteni az egész adósságot. A nagyobb átírások kockázatosak; A mért és teszteléssel védett lépések előnyben részesítendők.

Összefoglalva

A kód áttekintése és újrafeldolgozása határozza meg a kód élettartamát. A mesterséges intelligencia egy hatékony második szem és tervgenerátor: fontossági sorrendbe állított megállapításokat, biztonsági forgatókönyveket és kis lépéses átalakítási terveket biztosít. De az átalakításnak nem szabad megváltoztatnia a viselkedést, és ezt csak a tesztelés garantálja. Érvényesítsen minden AI megállapítást kóddal és teszteléssel; Ne vedd bizonyítéknak a „nincs probléma” választ. Tegye láthatóvá a műszaki tartozást és fizesse ki mért, tesztvédett lépésekkel.

Pályázati feladat

Vegyünk egy 40-70 soros, kissé összetett függvényt (vagy állítsuk elő az AI-t). Először kövesse a strukturált áttekintés utasítást, és rendezze a megállapításokat [KRITIKUS]/[KÖZEPES]/[ALACSONY] szerint; Manuálisan ellenőrizze legalább egy megállapítást a kóddal. Ezután a biztonságos refaktorálási terv prompttal először generálja és futtassa a jellemzési teszteket, majd kis lépésekben alkalmazza a refaktorálást, és ellenőrizze, hogy a tesztek minden lépésben zöldek maradnak.

ellenőrző lista

  • [ ] Az ismertetőt prioritási címkékkel strukturáltam (kritikus/közepes/alacsony).
  • [ ] Legalább egy mesterséges intelligencia megállapítást igazoltam a kóddal/teszttel.
  • [ ] Refaktorálás előtt teszteltem a jelenlegi viselkedést.
  • [ ] A változtatásokat kis lépésekben végeztem el, és minden lépésnél teszteltem.
  • [ ] Megadtam a "Viselkedésnek változatlannak kell maradnia" megszorítást a promptban.
  • [ ] Megerősítettem, hogy a biztonsági megállapításokhoz emberi megerősítés szükséges.