Enhet 4 / 12

Kodgranskning och felsökning

Vinster:

  • Möjlighet att använda AI som ett första granskningsfilter med kategorier och allvarlighetstaggar
  • Förmåga att filtrera fynd med mänskligt sinne för att verifiera/falska positiva/ansöka
  • Förmåga att genomdriva mänskliga godkännandekrav på affärsregel, arkitektur och säkerhetskritiska beslut

Kodgranskning är när en ändring skriven av en utvecklare granskas av någon annan innan den slås samman. Bra recension; Det fångar buggar tidigt, delar information och håller kodbasen konsekvent. Men recensioner är tröttsamma, distraktionsbenägna och blir ytliga under tidspress. Artificiell intelligens är här en dubbel assistent: den låter dig både förrensa din egen kod som du skickar in för granskning och att granska någon annans PR (pull request) med ett skarpare öga.

Den kritiska skillnaden är denna: AI påskyndar och förbättrar granskningen, men den kan inte ta över ansvaret för godkännande. Meningen "AI tittade, det är rent" är inte ett stöd. Det slutliga "sammanslagningsbeslutet" är upp till en ingenjör som kan koden och sammanhanget.

Vad AI är bra och dåligt med i recension

Bra för: Nullkontrollmissar, resursläckor (fil/länk förblir öppen), oupptäckta undantag, uppenbart felaktiga villkor (>= istället för >), byte av förslag, läsbarhet, saknade kantfall, enkla säkerhetslukter (som SQL-strängsammansättning), upptäckt av dubbletter av kod.

Svagheter: Djupa brister som bryter mot din affärsregel men kräver sammanhang och timing, såsom syntaktisk korrekt logik, arkitektonisk efterlevnad, verkliga prestandaflaskhalsar, samtidighetsfel. AI producerar också falska positiva (att misstaga något som faktiskt inte är ett problem med ett problem) och falska negativa (saknas den verkliga buggen). Därför är dess produktion en "varningslista", inte en definitiv dom.

Varning: Bara för att AI:n säger "inga problem" bevisar inte att koden är korrekt. Falska negativ är tysta; De farligaste misstagen är de som aldrig nämns i recensionen.

Systematiska granskningssteg

  1. Ge sammanhanget. Lägg till syftet med ändringen, den relevanta frågan och eventuella acceptanskriterier i prompten. Meningslös granskning ger meningslös tolkning.
  2. Dela upp det i kategorier. Be modellen klassificera resultaten som "bugg/säkerhet/prestanda/läsbarhet/stil"; så du skiljer det kritiska från bruset.
  3. Begär en allvarlighetsmärkning. Ge varje fynd betyget "hög/medel/låg" och inkludera "orsak" och "rekommenderad korrigering".
  4. Filtrera det med dina egna ögon. Utvärdera varje fynd: är det verkligt (verifiera), är det ett falskt positivt (skriv motivering), saknas det något (lägg till din egen kunskap).
  5. Verifiera kritiska sökvägar manuellt. Läs och kör rutter som involverar pengar, identitet, auktorisering och dataradering själv utan att förlita dig på AI.

Tre minifodral

Fall 1 — Tyst nollfel har upptäckts. Ett lag hade AI förhandsgranskning av en 380-linjers PR. Modellen flaggade ett sätt på vilket ett externt servicesvar kunde vara null, men inga kontroller gjordes för detta i koden. Den mänskliga granskaren verifierade denna sökväg och lade till en nollkontroll; Ett liknande fel orsakade ett 2-timmars avbrott i produktionen under föregående kvartal.

Fall 2 — Falsk positiv eliminering. AI:n flaggade ett "möjligt prestandaproblem" i en loop. Granskaren avslutade detta som ett falskt positivt, med vetskap om att slingan bara fungerar med maximalt 5 element (den slingrar över en enum). Modellen, som inte kände till sammanhanget, varnade; Den som kände till sammanhanget fattade rätt beslut.

Fall 3 – AI missade affärsregelfel. Medan ett rabattkonto bör vara maximalt 30 % enligt kampanjregeln, tillät koden 50 %. AI har aldrig märkt detta syntaktiskt perfekta logiska fel; eftersom han inte kände till regeln. Felet fångades i recensionen av produktägaren som kände till acceptanskriterierna. Lektion: validering av affärsregler är ett mänskligt jobb.

Fyra kopieringsbara mallar

Syfteorienterad, kategoriserad recension:

Roll: Noggrann kodgranskare. Ändringens syfte: {{purpose / issue}}Granska denna diff. Ge resultat i dessa kategorier: [Bug] [Säkerhet][Prestanda] [Läsbarhet] [Stil]. För varje fynd: fil:rad, svårighetsgrad (hög/medel/låg), orsak, rekommenderad korrigering. Markera "möjligt" om du är osäker. Du känner inte till affärsreglerna; Fråga mig om platser som kräver regler.{{diff}}

Så här förbereder du dig för att granska din egen kod:

Granska denna förändring innan du öppnar en PR. Leta efter: saknad null/felkontroll, resursläcka, kantfodral, hemlig, oprövad gren. Lista resultaten i prioritetsordning; föreslå korrigering 1 rad för varje.{{code}}

Kantfallsjakt:

Lista indata och situationer där den här funktionen kan gå sönder: tom, noll, för stor, negativ, samtidigt anrop, nätverksfel, partiell data. För varje fall, skriv det förväntade beteendet och vad den aktuella koden kommer att göra.{{function}}

Säkerhetsdoftskanning (förhandsgranskning):

Leta efter vanliga säkerhetslukter i den här koden: SQL/kommandosammansättning, ovaliderad indata, oföränderlig inbäddad hemlighet, osäker deserialisering, brist på behörighetskontroll. Dela upp fynden i "visst / troligt / kunskap". Detta är en preliminär screening; Det är inte ett definitivt beslut.{{code}}

Svag prompt / Stark prompt

Svag: "Finns det ett misstag i denna PR?"
Stark: "Syfte: lägg till kupongrabatt till varukorgens totala summa (rabatten får inte vara mer än 30 % — du kan inte verifiera denna regel själv, säg bara till om koden har en övre gräns). Undersök diff; ge resultat efter kategori + allvarlighetsgrad + föreslagen korrigering, markera "möjlig" om du är osäker. [diff]"

Den starka versionen anger tydligt avsikten, affärsregeln och gränsen för AI; Således kommer användbara fynd och området okänt för modellen förblir klart.

Hitta typ

AI-tillförlitlighet

mannens roll

Noll/felkontroll saknas

hög

Verifiera och ansök

Läsbarhet/stil

hög

Välj efter preferens

Enkel säkerhetslukt

medium

Slutför, skanna med fordon

Efterlevnad av affärsregler

låg

Det är helt mänskligt.

Samtidighet/arkitektur

låg

Expertgranskning krävs

AI Review är inte en ersättning för Human Review

Placera AI-granskning som ett "första filter": ett billigt, snabbt, outtröttligt preliminärt pass. Detta filter frigör den mänskliga granskarens uppmärksamhet från oviktiga detaljer (ett utrymme, ett namn) och riktar det till platser som verkligen kräver eftertanke – affärsregeln, arkitekturen, säkerhetsresultatet. Men ett sammanslagningsgodkännande är signaturen för en ansvarig person inom teamet. Oberoende granskning av minst en kompetent ingenjör är obligatorisk för säkerhetskritiska ändringar.

Tips: Läs listan över resultat som AI producerar som en "saker att kontrollera" snarare än en "att göra". Antingen verifiera och tillämpa varje punkt eller skriv ner i en mening varför du klarade det; detta spår gör granskningen granskningsbar.

Vanliga misstag

  • Det betyder "AI tittade, det är rent". Detta är en falsk känsla av självförtroende på grund av falska negativa resultat.
  • Att inte ge sammanhang. Utan syfte och acceptanskriterier producerar modellen endast ytliga stiltolkningar.
  • Blint applicerar falska positiva. Att åtgärda varje varning för modellen kan bryta körkoden.
  • Frågar modellen om affärsregeln. Modellen känner inte till regeln; Det är upp till människan att verifiera det.
  • Diskriminera inte våld. Att lägga ett kritiskt säkerhetsfynd och ett namnförslag i samma påse överskuggar det som är viktigt.

Sammanfattningsvis

AI är ett outtröttligt första filter i kodgranskning: det fångar null-/felmissar, kantfall och enkel säkerhet luktar gott; men det är svagt på kontextkrävande brister som affärsregel, arkitektur och samtidighet, och producerar både falska positiva och falska negativa. Begär fynd efter kategori och svårighetsgrad, filtrera var och en med mänsklig intelligens, verifiera manuellt kritiska vägar. Godkännande är alltid en ansvarig ingenjörs underskrift.

Applikationsuppgift

Välj en verklig eller ny PR/diff. Låt AI först granska den med mallen "objektiv, kategorigranskning". Lägg resultaten i en tabell och bestäm för var och en: sant (jag har verifierat), falskt positivt (här är mitt resonemang) eller ska implementeras. Ta sedan en rundtur själv och försök hitta åtminstone en sak (särskilt en affärsregel eller kantfall) som AI:n saknas och skriv ner det.

checklista

  • [ ] Jag använder AI-granskning som ett första filter, inte en rekommendation.
  • [ ] Jag lägger till syftet och acceptanskriterierna till granskningsuppmaningen.
  • [ ] Jag separerar resultaten från bullret efter kategori och vill starkt ha dem.
  • [ ] Jag filtrerar medvetet varje fynd för att bekräfta/falska positivt/tillämpa.
  • [ ] Som människa kontrollerar jag affärsregler och arkitektonisk efterlevnad.
  • [ ] Jag kräver godkännande från en kvalificerad ingenjör för säkerhetskritiska ändringar.