Dobički:
- Možnost uporabe AI kot filtra za začetni pregled s kategorijami in oznakami resnosti
- Sposobnost filtriranja ugotovitev s človeškim umom za preverjanje/lažno pozitivno/uporabo
- Sposobnost uveljavljanja zahtev za človeško odobritev poslovnih pravil, arhitekture in varnostno kritičnih odločitev
Pregled kode je, ko spremembo, ki jo je napisal razvijalec, pregleda nekdo drug, preden se združi. Dober pregled; Zgodaj odkrije hrošče, deli informacije in ohranja doslednost baze kode. Toda pregledi so utrujajoči, nagnjeni k motnjam in pod časovnim pritiskom postanejo površni. Umetna inteligenca je tukaj dvojni pomočnik: omogoča vam, da vnaprej očistite svojo kodo, ki jo pošljete v pregled, in da z ostrejšim očesom preučite PR (povlečno zahtevo) nekoga drugega.
Ključna razlika je naslednja: AI pospeši in izboljša pregled, vendar ne more prevzeti odgovornosti za odobritev. Stavek "AI je pogledal, čisto je" ni zaznamek. Končna odločitev o "združitvi" je odvisna od inženirja, ki pozna kodo in kontekst.
Kaj je AI dobra in slaba v pregledu
Primerno za: napake pri ničelnem preverjanju, uhajanje virov (datoteka/povezava ostaja odprta), neulovljene izjeme, očitno napačni pogoji (>= namesto >), predlogi za preimenovanje, berljivost, manjkajoče robne črke, preprosti varnostni vonji (kot je združevanje nizov SQL), zaznavanje podvojene kode.
Slabosti: globoke napake, ki kršijo vaše poslovno pravilo, vendar zahtevajo kontekst in čas, kot so sintaktično pravilna logika, arhitekturna skladnost, resnična ozka grla pri delovanju, napake sočasnosti. Umetna inteligenca proizvaja tudi lažno pozitivne (zameša nekaj, kar dejansko ni težava, za težavo) in lažno negativne (zgreši resnično napako). Zato je njegov rezultat "seznam opozoril", ne dokončna razsodba.
Pozor: samo zato, ker AI pravi "ni problema", še ne dokazuje, da je koda pravilna. Lažni negativi so tihi; Najbolj nevarne napake so tiste, ki v recenziji niso nikoli omenjene.
Koraki sistematičnega pregleda
- Podajte kontekst. Pozivu dodajte namen spremembe, ustrezno težavo in merila sprejemljivosti, če obstajajo. Nesmiselna revizija povzroči nesmiselno razlago.
- Razdelite ga na kategorije. Prosite model, naj razvrsti ugotovitve kot "napake/varnost/zmogljivost/berljivost/slog"; tako ločite kritično od hrupa.
- Zahtevajte oznako resnosti. Vsaki ugotovitvi dodelite oceno "visoko/srednje/nizko" in vključite "vzrok" in "priporočen popravek".
- Filtrirajte ga na lastne oči. Vsako ugotovitev ovrednoti: ali je resnična (preveri), ali je lažno pozitivna (napiši utemeljitev), ali kaj manjka (dodaj svoje znanje).
- Ročno preverite kritične poti. Sami preberite in izvedite poti, ki vključujejo denar, identiteto, avtorizacijo in brisanje podatkov, ne da bi se zanašali na AI.
Trije mini kovčki
Primer 1 – Ujeta tiha ničelna napaka. Ena ekipa je imela AI predpregled 380-vrstičnega PR-ja. Model je označil način, na katerega bi lahko bil odgovor zunanje storitve ničelni, vendar v kodi za to ni bilo opravljenih nobenih preverjanj. Človeški pregledovalec je preveril to pot in dodal ničelno preverjanje; Podobna napaka je povzročila 2-urno prekinitev proizvodnje v prejšnjem četrtletju.
Primer 2 – Lažno pozitivna eliminacija. AI je v zanki označil "možno težavo z zmogljivostjo". Pregledovalec je to zaključil kot lažno pozitivno, saj je vedel, da zanka deluje le z največ 5 elementi (zanka se izvaja čez enum). Manekenka, ki ni poznala konteksta, je opozorila; Oseba, ki je poznala kontekst, se je pravilno odločila.
Primer 3 – AI zgrešil napako poslovnega pravila. Medtem ko mora račun s popustom znašati največ 30 % v skladu s pravilom kampanje, je koda dovoljevala 50 %. AI nikoli ni opazil te sintaktično popolne logične napake; ker ni poznal pravila. Napako je med pregledom odkril lastnik izdelka, ki je poznal merila sprejemljivosti. Lekcija: potrjevanje poslovnih pravil je človeško delo.
Štiri kopirane predloge
Ciljno usmerjen, kategoriziran pregled:
Vloga: natančen pregledovalec kode. Namen spremembe: {{purpose / issue}}Preglejte to razl. Navedite ugotovitve v teh kategorijah: [Hrošč] [Varnost][Zmogljivost] [Berljivost] [Slog]. Za vsako ugotovitev: datoteka: vrstica, resnost (visoka/srednja/nizka), vzrok, priporočeni popravek. Če niste prepričani, označite »možno«. Ne poznate poslovnih pravil; Vprašaj me o mestih, ki zahtevajo pravila.{{diff}}
Za pripravo na pregled lastne kode:
Preglejte to spremembo, preden odprete PR. Poiščite: manjkajoče ničelne vrednosti/preverjanje napak, uhajanje virov, robni primer, skrivnost, nepreizkušena veja. Navedite ugotovitve po prioriteti; predlagaj popravek 1 vrstico za vsako.{{code}}
Lov na robove:
Seznam vnosov in situacij, v katerih bi lahko ta funkcija prenehala delovati: prazno, ničelno, preveliko, negativno, sočasni klic, omrežna napaka, delni podatki. Za vsak primer napišite pričakovano vedenje in kaj bo storila trenutna koda.{{function}}
Varnostno skeniranje vonjav (predhodni pregled):
V tej kodi poiščite običajne vonjave po varnosti: veriženje SQL/ukaza, nepreverjen vnos, nespremenljiva vdelana skrivnost, nevarna deserializacija, pomanjkanje preverjanja privilegijev. Ločite ugotovitve na "gotovo / verjetno / znanje". To je predhodni pregled; To ni dokončna odločitev.{{code}}
Šibek poziv/močan poziv
Slab: "Je v tem PR-ju kakšna napaka?"
Strong: "Namen: dodajte popust na kupon v skupno košarico (popust ne sme biti večji od 30 % — tega pravila ne morete preveriti sami, samo povejte mi, ali koda nalaga zgornjo mejo). Preglejte razlike; navedite ugotovitve po kategoriji + resnost + predlagani popravek, označite 'možno', če niste prepričani. [diff]"
Močna različica jasno navaja namen, poslovno pravilo in meje AI; Tako pridejo koristne ugotovitve in modelu neznano območje ostane jasno.
Vrsta iskanja
Zanesljivost AI
moška vloga
Manjka preverjanje ničelnosti/napak
visoka
Preveri in uporabi
Berljivost/slog
visoka
Izberite po želji
Preprost varnostni vonj
srednje
Dokončanje, skeniranje z vozilom
Skladnost s poslovnimi pravili
nizka
To je povsem človeško.
Sočasnost/arhitektura
nizka
Potreben je strokovni pregled
Pregled z umetno inteligenco ni nadomestilo za človeški pregled
Postavite pregled z umetno inteligenco kot »prvi filter«: poceni, hiter in neutruden predhodni prehod. Ta filter osvobodi pozornost pregledovalca od nepomembnih podrobnosti (presledek, ime) in jo usmeri na mesta, ki resnično zahtevajo razmislek – poslovno pravilo, arhitektura, varnostni rezultat. Toda odobritev združitve je podpis odgovorne osebe znotraj ekipe. Za spremembe, ki so pomembne za varnost, je obvezen neodvisen pregled vsaj enega pristojnega inženirja.
Namig: preberite seznam ugotovitev, ki jih ustvari AI kot »stvari za preverjanje« in ne kot »opraviti«. Bodisi preverite in uporabite vsako postavko bodisi v enem stavku zapišite, zakaj ste jo opravili; ta sled naredi pregled revizijski.
Pogoste napake
- Pomeni "AI je pogledal, čisto je". To je lažen občutek zaupanja zaradi lažnih negativnih rezultatov.
- Brez konteksta. Brez namena in kriterijev sprejemljivosti model ustvarja le površne slogovne interpretacije.
- Slepo uporabo lažnih pozitivnih rezultatov. Odpravljanje vsakega opozorila modela bi lahko pokvarilo delujočo kodo.
- Vprašanje modela o poslovnem pravilu. Model ne pozna pravila; Na človeku je, da to preveri.
- Ne diskriminirajte nasilja. Spraviti kritično varnostno ugotovitev in predlog imena v isto vrečo zasenči tisto, kar je pomembno.
Če povzamem
Umetna inteligenca je neutruden prvi filter pri pregledu kode: dobro lovi zgrešene vrednosti/napake, robne primere in preprosta varnost; vendar je šibek pri pomanjkljivostih, ki zahtevajo kontekst, kot so poslovna pravila, arhitektura in sočasnost, ter proizvaja lažno pozitivne in lažno negativne rezultate. Zahtevajte ugotovitve po kategoriji in resnosti, filtrirajte vsako s človeško inteligenco, ročno preverite kritične poti. Soglasje je vedno podpis odgovornega inženirja.
Aplikacijska naloga
Izberite pravi ali nedavni PR/diff. Najprej naj ga AI pregleda s predlogo »objektivno usmerjen pregled kategorije«. Ugotovitve postavite v tabelo in se za vsako odločite: resnično (preveril sem), lažno pozitivno (tukaj je moja utemeljitev) ali za izvedbo. Nato se sami odpravite na ogled in poskusite najti vsaj eno stvar (zlasti poslovno pravilo ali robni primer), ki AI manjka, in jo zapišite.
kontrolni seznam
- [ ] Oceno AI uporabljam kot prvi filter, ne kot odobritev.
- [ ] Pozivu za pregled dodam namen in merila sprejemljivosti.
- [ ] Ugotovitve ločim od hrupa po kategorijah in si jih močno želim.
- [ ] Vsako ugotovitev zavestno filtriram za potrditev/lažno pozitivno/uporabo.
- [ ] Kot človek preverjam poslovna pravila in skladnost z arhitekturo.
- [ ] Za varnostno kritične spremembe potrebujem odobritev kvalificiranega inženirja.