Vienetas 4 / 12

Kodo peržiūra ir klaidų paieška

Pelnas:

  • Galimybė naudoti AI kaip pradinį peržiūros filtrą su kategorijomis ir sunkumo žymomis
  • Gebėjimas filtruoti išvadas žmogaus protu, kad būtų galima patikrinti/klaidingai teigiamas/taikyti
  • Gebėjimas vykdyti žmogaus patvirtinimo reikalavimus verslo taisyklėms, architektūrai ir saugumui svarbiems sprendimams

Kodo peržiūra yra tada, kai kūrėjo parašytą pakeitimą prieš sujungiant peržiūri kažkas kitas. Gera apžvalga; Jis anksti nustato klaidas, dalijasi informacija ir palaiko nuoseklią kodų bazę. Tačiau atsiliepimai vargina, linkę blaškytis ir tampa paviršutiniški spaudžiant laikui. Dirbtinis intelektas čia yra dvigubas pagalbininkas: jis leidžia iš anksto išvalyti savo kodą, kurį pateikiate peržiūrėti, ir aštresniu žvilgsniu išnagrinėti kažkieno PR (pull request).

Esminis skirtumas yra toks: AI pagreitina ir pagerina peržiūrą, bet negali perimti atsakomybės už patvirtinimą. Sakinys „AI pažiūrėjau, tai švaru“ nėra pritarimas. Galutinį sprendimą „sujungti“ turi priimti inžinierius, žinantis kodą ir kontekstą.

Kas AI yra geras ir blogas apžvalgoje

Tinka: nulinio patikrinimo praleidimams, išteklių nutekėjimui (failas / nuoroda lieka atvira), nepastebėtos išimtys, akivaizdžiai neteisingos sąlygos (>= vietoj >), pervadinimo pasiūlymai, skaitomumas, trūkstamos raidės, paprasti saugos kvapai (pvz., SQL eilutės sujungimas), pasikartojančio kodo aptikimas.

Trūkumai: gilūs trūkumai, pažeidžiantys jūsų verslo taisyklę, tačiau reikalaujantys konteksto ir laiko, pvz., sintaksiškai teisinga logika, architektūros atitikimas, realios veiklos kliūtys, lygiagretumo klaidos. AI taip pat sukuria klaidingus teigiamus duomenis (tai, kas iš tikrųjų nėra problema, supainioja su problema) ir klaidingus neigiamus (neatsižvelgiant į tikrąją klaidą). Todėl jo produkcija yra „atsargumo sąrašas“, o ne galutinis nuosprendis.

Atsargiai: vien todėl, kad AI sako „nėra problemų“, neįrodo, kad kodas yra teisingas. Klaidingi negatyvai nutyli; Pavojingiausios klaidos yra tos, apie kurias apžvalgoje nė karto neužsimenama.

Sistemingos peržiūros žingsniai

  1. Pateikite kontekstą. Į raginimą pridėkite pakeitimo tikslą, atitinkamą problemą ir priėmimo kriterijus, jei tokių yra. Be tikslo peržiūra sukuria netikslingą interpretaciją.
  2. Suskirstykite jį į kategorijas. Paprašykite modelio klasifikuoti išvadas kaip „klaida / sauga / našumas / skaitomumas / stilius“; todėl atskiriate kritinius dalykus nuo triukšmo.
  3. Prašykite sunkumo etiketės. Kiekvienam radiniui suteikite įvertinimą „aukštas/vidutinis/žemas“ ir įtraukite „priežastis“ bei „rekomenduojama korekcija“.
  4. Filtruokite jį savo akimis. Įvertinkite kiekvieną radinį: ar jis tikras (patikrinti), ar klaidingas teigiamas (parašykite pagrindimą), ar ko nors trūksta (pridėkite savo žinias).
  5. Patvirtinkite kritinius kelius rankiniu būdu. Pats skaitykite ir vykdykite maršrutus, susijusius su pinigais, tapatybe, įgaliojimu ir duomenų ištrynimu, nepasitikėdami dirbtiniu intelektu.

Trys mini dėklai

1 atvejis – užfiksuota tyli nulinė klaida. Viena komanda iš anksto peržiūrėjo 380 eilučių PR. Modelis pažymėjo būdą, kuriuo išorinės paslaugos atsakymas gali būti nulinis, tačiau kode tai nebuvo patikrinta. Žmogus tikrintojas patikrino šį kelią ir pridėjo nulinį patikrinimą; Panaši klaida praėjusį ketvirtį sukėlė 2 valandų gamybos pertrauką.

2 atvejis – klaidingai teigiamas pašalinimas. AI ciklo metu pažymėjo „galimą našumo problemą“. Recenzentas uždarė tai kaip klaidingą teigiamą rezultatą, nes žinojo, kad ciklas veikia tik su daugiausia 5 elementais (ji sukasi per enumą). Konteksto nežinantis modelis perspėjo; Žmogus, žinantis kontekstą, padarė teisingą sprendimą.

3 atvejis – AI praleistos verslo taisyklės klaida. Nors pagal kampanijos taisyklę nuolaidos paskyroje turi būti ne daugiau kaip 30%, kodas leido 50%. AI niekada nepastebėjo šios sintaksiškai tobulos loginės klaidos; nes nežinojo taisyklės. Klaidą peržiūros metu pastebėjo produkto savininkas, kuris žinojo priėmimo kriterijus. Pamoka: verslo taisyklių patvirtinimas yra žmogaus darbas.

Keturi kopijuojami šablonai

Tikslinė, suskirstyta apžvalga:

Vaidmuo: kruopštus kodo apžvalgininkas. Pakeitimo tikslas: {{tikslas / problema}}Peržiūrėkite šį skirtumą. Pateikite išvadas šiose kategorijose: [Klaida] [Sauga][Našumas] [Įskaitomumas] [Stilius]. Kiekvienai išvadai: failas: eilutė, sunkumas (didelis / vidutinis / mažas), priežastis, rekomenduojamas pataisymas. Pažymėkite „įmanoma“, jei nesate tikri. Jūs nežinote verslo taisyklių; Paklauskite manęs apie vietas, kurioms reikia taisyklių.{{diff}}

Norėdami pasiruošti peržiūrėti savo kodą:

Peržiūrėkite šį pakeitimą prieš atidarydami PR. Ieškokite: trūkstamas nulinis/klaidos patikrinimas, resursų nutekėjimas, krašto atvejis, slaptas, nepatikrintas atšakas. Išvardykite išvadas prioriteto tvarka; pasiūlykite pataisymą po 1 eilutę kiekvienam.{{code}}

Krašto dėklo medžioklė:

Išvardykite įvestis ir situacijas, kuriose ši funkcija gali sugesti: tuščia, nulinė, per didelė, neigiama, vienu metu vykstantis skambutis, tinklo klaida, daliniai duomenys. Kiekvienu atveju parašykite numatomą elgesį ir tai, ką veiks dabartinis kodas.{{function}}

Apsauginis kvapo nuskaitymas (išankstinė patikra):

Šiame kode ieškokite įprastų saugos kvapų: SQL / komandų sujungimas, nepatvirtinta įvestis, nekintanti įterpta paslaptis, nesaugus deserializavimas, teisių tikrinimo trūkumas. Išvadas išskirkite į „tam tikras / tikėtinas / žinias“. Tai preliminarus patikrinimas; Tai nėra galutinis sprendimas.{{code}}

Silpnas raginimas / Stiprus raginimas

Silpnas: „Ar šiame PR yra klaida?
Stiprus: „Tikslas: pridėti kupono nuolaidą prie viso krepšelio (nuolaida turi būti ne didesnė kaip 30 % – šios taisyklės negalite patikrinti patys, tiesiog pasakykite, ar kodas nustato viršutinę ribą). Ištirkite skirtumą; pateikite išvadas pagal kategoriją + sunkumą + siūlomas pataisymas, pažymėkite „galima“, jei nesate tikri. [skirtumas]"

Stiprioji versija aiškiai nurodo AI tikslą, verslo taisyklę ir ribas; Taigi atsiranda naudingų išvadų ir modeliui nežinoma sritis lieka aiški.

Tipo radimas

AI patikimumas

vyro vaidmuo

Trūksta nulio / klaidų patikrinimo

aukštas

Patvirtinkite ir taikykite

Skaitomumas/stilius

aukštas

Pasirinkite pagal pageidavimą

Paprastas saugumo kvapas

vidutinis

Užbaikite, nuskaitykite su transporto priemone

Verslo taisyklių laikymasis

žemas

Tai visiškai žmogiška.

Lygiagretumas/architektūra

žemas

Reikalinga ekspertų peržiūra

AI apžvalga nėra žmogaus apžvalgos pakaitalas

AI apžvalgą vertinkite kaip „pirmą filtrą“: pigus, greitas, nenuilstantis išankstinis leidimas. Šis filtras išlaisvina žmogaus apžvalgininko dėmesį nuo nesvarbių detalių (tarpo, pavadinimo) ir nukreipia jį į vietas, kuriose tikrai reikia apgalvoti – verslo taisyklę, architektūrą, saugumo rezultatą. Tačiau sujungimo patvirtinimas yra atsakingo asmens komandoje parašas. Nepriklausoma peržiūra, kurią atlieka bent vienas kompetentingas inžinierius, privaloma atlikti saugai svarbius pakeitimus.

Patarimas: perskaitykite išvadų, kurias AI pateikia kaip „patikrinti dalykus“, o ne „daryti“, sąrašą. Arba patikrinkite ir pritaikykite kiekvieną elementą arba vienu sakiniu užrašykite, kodėl jį išlaikėte; šis pėdsakas leidžia peržiūrėti peržiūrą.

Dažnos klaidos

  • Tai reiškia "AI pažiūrėjau, tai švaru". Tai klaidingas pasitikėjimo jausmas dėl klaidingų neigiamų dalykų.
  • Nepateikia konteksto. Be tikslo ir priėmimo kriterijų modelis sukuria tik paviršutiniškas stiliaus interpretacijas.
  • Aklas klaidingų teigiamų rezultatų taikymas. Pataisius kiekvieną modelio įspėjimą, gali sutrikti veikiantis kodas.
  • Modelio paklausimas apie verslo taisyklę. Modelis nežino taisyklės; Žmogus turi tai patikrinti.
  • Nediskriminuokite smurto. Svarbių saugos duomenų ir pavadinimo pasiūlymo įdėjimas į tą patį krepšį užgožia tai, kas svarbu.

Apibendrinant

AI yra nenuilstamas pirmasis kodo peržiūros filtras: jis gerai užfiksuoja nulinio/klaidos atvejus, kraštutinius atvejus ir paprastų saugumo kvapų kvapą; tačiau jis yra silpnas dėl konteksto reikalaujančių trūkumų, tokių kaip verslo taisyklė, architektūra ir lygiagretumas, ir pateikia klaidingų teigiamų ir klaidingų neigiamų rezultatų. Pateikite užklausą dėl išvadų pagal kategoriją ir sunkumą, filtruokite kiekvieną pagal žmogaus intelektą, rankiniu būdu patikrinkite svarbiausius kelius. Patvirtinimas visada yra atsakingo inžinieriaus parašas.

Taikymo užduotis

Pasirinkite tikrą arba naujausią PR / skirtumą. Pirmiausia leiskite dirbtiniam intelektui jį peržiūrėti naudodami šabloną „objektyvus, kategorijų peržiūra“. Sudėkite išvadas į lentelę ir pagal kiekvieną nuspręskite: teisinga (patikrinau), klaidingai teigiama (čia mano samprotavimai) ar įgyvendinti. Tada apžiūrėkite patys ir pabandykite rasti bent vieną dalyką (ypač verslo taisyklę ar pranašumą), kurio AI trūksta, ir užsirašykite jį.

kontrolinis sąrašas

  • [ ] AI apžvalgą naudoju kaip pirmąjį filtrą, o ne patvirtinimą.
  • [ ] Prie peržiūros raginimo pridedu tikslą ir priėmimo kriterijus.
  • [ ] Atskiriu išvadas nuo triukšmo pagal kategorijas ir labai jų noriu.
  • [ ] Sąmoningai filtruoju kiekvieną radinį, kad patvirtinčiau/klaidingai teigiamas/taikyčiau.
  • [ ] Kaip žmogus, aš tikrinu verslo taisyklių ir architektūros laikymąsi.
  • [ ] Man reikalingas kvalifikuoto inžinieriaus patvirtinimas dėl saugai svarbių pakeitimų.