Jednotka 4 / 12

Kontrola kódu a hľadanie chýb

zisky:

  • Schopnosť používať AI ako počiatočný filter kontroly s kategóriami a značkami závažnosti
  • Schopnosť filtrovať zistenia s ľudskou mysľou na overenie/falošne pozitívne/použitie
  • Schopnosť presadzovať požiadavky ľudského súhlasu na obchodné pravidlá, architektúru a bezpečnostné rozhodnutia

Kontrola kódu je, keď zmenu napísanú vývojárom skontroluje niekto iný pred jej zlúčením. Dobrý prehľad; Včas zachytáva chyby, zdieľa informácie a udržiava kódovú základňu konzistentnú. Ale recenzie sú únavné, náchylné na rozptýlenie a pod časovým tlakom sa stávajú povrchnými. Umelá inteligencia je tu dvojnásobným pomocníkom: umožňuje vám predčistiť svoj vlastný kód, ktorý odošlete na kontrolu, a ostrejším pohľadom preskúmať PR (požiadavku na stiahnutie) niekoho iného.

Kritický rozdiel je tento: AI zrýchľuje a zlepšuje kontrolu, ale nemôže prevziať zodpovednosť za schválenie. Veta „AI vyzerala, je čistá“ nie je potvrdením. Konečné rozhodnutie o „zlúčení“ je na inžinierovi, ktorý pozná kód a kontext.

Prehľad toho, čo je AI dobrá a zlá

Dobré pre: Chyby pri nulovej kontrole, úniky zdrojov (súbor/odkaz zostávajú otvorené), nezachytené výnimky, zjavne nesprávne podmienky (>= namiesto >), návrhy na premenovanie, čitateľnosť, chýbajúce okraje, jednoduché bezpečnostné zápachy (napríklad reťazenie reťazcov SQL), detekcia duplicitného kódu.

Slabé stránky: Hlboké chyby, ktoré porušujú vaše obchodné pravidlá, ale vyžadujú kontext a načasovanie, ako napríklad syntakticky správna logika, súlad s architektúrou, skutočné obmedzenia výkonu, chyby súbežnosti. Umelá inteligencia tiež produkuje falošné pozitíva (zamieňanie niečoho, čo v skutočnosti nie je problémom, za problém) a falošné negatívy (chýbajúca skutočná chyba). Preto je jeho výstupom „zoznam upozornení“, nie definitívny verdikt.

Upozornenie: To, že AI ​​hovorí „žiadny problém“, nedokazuje, že kód je správny. Falošné negatívy mlčia; Najnebezpečnejšie chyby sú tie, ktoré sa v recenzii nikdy nespomínajú.

Kroky systematického preskúmania

  1. Uveďte kontext. Do výzvy pridajte účel zmeny, príslušný problém a akceptačné kritériá, ak nejaké existujú. Bezúčelná recenzia produkuje bezúčelnú interpretáciu.
  2. Rozdeľte to do kategórií. Požiadajte model, aby klasifikoval zistenia ako „chyba/zabezpečenie/výkon/čitateľnosť/štýl“; takže oddelíte kritické od hluku.
  3. Vyžiadajte si označenie závažnosti. Každému nálezu priraďte hodnotenie „vysoké/stredné/nízke“ a uveďte „príčinu“ a „odporúčanú nápravu“.
  4. Prefiltrujte si to na vlastné oči. Vyhodnoťte každé zistenie: je skutočné (overte), či je falošne pozitívne (napíšte odôvodnenie), chýba vám niečo (doplňte vlastné poznatky).
  5. Manuálne overte kritické cesty. Čítajte a spúšťajte cesty zahŕňajúce peniaze, identitu, autorizáciu a vymazanie údajov sami bez spoliehania sa na AI.

Tri mini puzdrá

Prípad 1 – Zachytená tichá nulová chyba. Jeden tím mal predbežnú kontrolu AI s 380-riadkovým PR. Model označil spôsob, akým by odpoveď externej služby mohla byť nulová, ale v kóde sa na to nevykonali žiadne kontroly. Ľudský kontrolór overil túto cestu a pridal kontrolu nuly; Podobná chyba spôsobila v predchádzajúcom štvrťroku 2-hodinové prerušenie výroby.

Prípad 2 – Falošná pozitívna eliminácia. AI ​​nahlásila „možný problém s výkonom“ v slučke. Recenzent to uzavrel ako falošne pozitívny, pretože vedel, že slučka funguje iba s maximálne 5 prvkami (zacyklí sa cez enum). Modelka, ktorá nepoznala súvislosti, varovala; Človek, ktorý poznal kontext, sa rozhodol správne.

Prípad 3 – Chyba obchodného pravidla AI. Kým zľavový účet by mal byť podľa pravidla kampane maximálne 30 %, kód umožňoval 50 %. AI si nikdy nevšimla túto syntakticky dokonalú logickú chybu; pretože nepoznal pravidlo. Chybu zachytil v recenzii vlastník produktu, ktorý poznal kritériá prijatia. Ponaučenie: Overovanie obchodných pravidiel je ľudská práca.

Štyri kopírovateľné šablóny

Účelovo orientovaná, kategorizovaná recenzia:

Úloha: Precízny kontrolór kódu. Účel zmeny: {{purpose / issue}}Skontrolovať tento rozdiel. Poskytnite zistenia v týchto kategóriách: [Chyba] [Zabezpečenie][Výkon] [Čitateľnosť] [Štýl]. Pre každý nález: súbor:riadok, závažnosť (vysoká/stredná/nízka), príčina, odporúčaná oprava. Ak si nie ste istý, označte „možné“. Nepoznáte pravidlá podnikania; Opýtajte sa ma na miesta, ktoré vyžadujú pravidlá.{{diff}}

Ak sa chcete pripraviť na kontrolu vlastného kódu:

Pred otvorením PR skontrolujte túto zmenu. Hľadajte: chýbajúcu kontrolu null/bug, únik zdrojov, okrajový prípad, tajnú, netestovanú vetvu. Uveďte zistenia v poradí podľa priority; navrhnite opravu 1 riadok pre každú z nich.{{code}}

Hľadanie okrajových prípadov:

Uveďte vstupy a situácie, v ktorých môže táto funkcia prestať fungovať: prázdna, nulová, príliš veľká, záporná, súbežné volanie, chyba siete, čiastočné údaje. Pre každý prípad napíšte očakávané správanie a čo bude robiť aktuálny kód.{{funkcia}}

Bezpečnostné skenovanie pachov (predbežná kontrola):

V tomto kóde hľadajte bežné pachy zabezpečenia: zreťazenie SQL/príkaz, nevalidovaný vstup, nemenné vložené tajomstvo, nezabezpečená deserializácia, nedostatok kontroly privilégií. Rozdeľte zistenia na „určité/pravdepodobné/vedomosti“. Toto je predbežný skríning; Nie je to definitívne rozhodnutie.{{code}}

Slabá výzva / Silná výzva

Slabý: "Je v tomto PR chyba?"
Silný: "Účel: pridajte zľavu z kupónu k celkovej sume košíka (zľava nesmie byť väčšia ako 30 % — toto pravidlo nemôžete overiť sami, povedzte mi, či kód stanovuje hornú hranicu). Preskúmajte rozdiel; uveďte zistenia podľa kategórie + závažnosti + navrhovanej opravy, ak si nie ste istí, označte 'možné'. [rozdiel]"

Silná verzia jasne uvádza zámer, obchodné pravidlo a hranice AI; Prichádzajú teda užitočné zistenia a modelom neznáma oblasť zostáva jasná.

Typ nálezu

Spoľahlivosť AI

mužská rola

Chýba kontrola nuly/chyby

vysoká

Overiť a použiť

Čitateľnosť/štýl

vysoká

Vyberte si podľa preferencie

Jednoduchý bezpečnostný zápach

stredná

Dokončiť, skenovať vozidlom

Dodržiavanie obchodných pravidiel

nízka

Je to úplne ľudské.

Súbeh/architektúra

nízka

Vyžaduje sa odborné posúdenie

AI recenzia nie je náhradou za kontrolu človekom

Umiestnite recenziu AI ako „prvý filter“: lacný, rýchly a neúnavný predbežný prechod. Tento filter oslobodzuje pozornosť ľudského recenzenta od nedôležitých detailov (medzera, meno) a nasmeruje ju na miesta, ktoré skutočne vyžadujú premýšľanie – obchodné pravidlo, architektúra, výsledok bezpečnosti. Schválenie zlúčenia je však podpisom zodpovednej osoby v rámci tímu. Pre zmeny kritické z hľadiska bezpečnosti je povinné nezávislé preskúmanie aspoň jedným kompetentným inžinierom.

Tip: Prečítajte si zoznam zistení, ktoré AI ​​vytvára ako „veci, ktoré treba skontrolovať“, a nie ako „čo robiť“. Buď overte a aplikujte každú položku, alebo napíšte jednou vetou, prečo ste ju prešli; táto stopa robí kontrolu auditovateľnou.

Časté chyby

  • Znamená to „AI vyzerala, je čistá“. Ide o falošný pocit dôvery kvôli falošným negatívam.
  • Neuvádzanie kontextu. Bez účelu a kritérií akceptácie vytvára model iba povrchné interpretácie štýlu.
  • Slepo uplatňovanie falošných poplachov. Oprava každého varovania modelu by mohla narušiť spustený kód.
  • Pýtanie sa modelu na obchodné pravidlo. Modelka nepozná pravidlo; Je na človeku, aby si to overil.
  • Nediskriminujte násilie. Vloženie kritického bezpečnostného nálezu a návrhu názvu do jedného vreca zatieni to, čo je dôležité.

V súhrne

AI je neúnavným prvým filtrom pri kontrole kódu: zachytáva nulové/chybové chyby, okrajové prípady a jednoduché zabezpečenie dobre vonia; ale je slabý v súvislosti s chybami vyžadujúcimi kontext, ako sú obchodné pravidlá, architektúra a súbežnosť, a vytvára falošné pozitíva aj falošné negatívy. Požiadajte o zistenia podľa kategórie a závažnosti, filtrujte každý pomocou ľudskej inteligencie, manuálne overte kritické cesty. Schválenie je vždy podpisom zodpovedného inžiniera.

Aplikačná úloha

Vyberte skutočný alebo nedávny PR/rozdiel. Najprv nechajte AI, aby to skontrolovala pomocou šablóny „objektívne orientovaná, kategória recenzie“. Umiestnite zistenia do tabuľky a pre každé sa rozhodnite: pravdivé (overil som), falošne pozitívne (tu je moje zdôvodnenie) alebo sa má implementovať. Potom si urobte prehliadku a pokúste sa nájsť aspoň jednu vec (najmä obchodné pravidlo alebo okrajový prípad), ktorá AI chýba, a zapíšte si ju.

kontrolný zoznam

  • [ ] Kontrolu AI používam ako prvý filter, nie ako potvrdenie.
  • [ ] Do výzvy na kontrolu pridávam účel a kritériá prijatia.
  • [ ] Oddeľujem zistenia od hluku podľa kategórie a silne ich chcem.
  • [ ] Každý nález vedome filtrujem, aby som potvrdil/falošne pozitívny/aplikoval.
  • [ ] Ako človek kontrolujem obchodné pravidlá a súlad s architektúrou.
  • [ ] Na zmeny kritické z hľadiska bezpečnosti potrebujem súhlas kvalifikovaného inžiniera.