Eenheid 4 / 12

Codebeoordeling en foutopsporing

Winst:

  • Mogelijkheid om AI te gebruiken als een eerste beoordelingsfilter met categorieën en ernsttags
  • Mogelijkheid om bevindingen met de menselijke geest te filteren om te verifiëren/vals-positief/toe te passen
  • Mogelijkheid om menselijke goedkeuringsvereisten af te dwingen voor bedrijfsregels, architectuur en veiligheidskritische beslissingen

Codebeoordeling is wanneer een door een ontwikkelaar geschreven wijziging door iemand anders wordt beoordeeld voordat deze wordt samengevoegd. Goede recensie; Het spoort bugs vroegtijdig op, deelt informatie en houdt de codebasis consistent. Maar recensies zijn vermoeiend, vatbaar voor afleiding en worden oppervlakkig onder tijdsdruk. Kunstmatige intelligentie is daarbij een tweeledige assistent: je kunt er zowel je eigen code die je ter beoordeling voorlegt, vooraf opschonen als de PR van iemand anders (pull request) met een scherper oog bekijken.

Het cruciale onderscheid is dit: AI versnelt en verbetert de beoordeling, maar kan de verantwoordelijkheid voor goedkeuring niet overnemen. De zin "AI keek, het is schoon" is geen goedkeuring. De uiteindelijke beslissing om samen te voegen is aan een ingenieur die de code en context kent.

Overzicht waar AI goed en slecht over is

Goed voor: ontbrekende nulcontroles, lekken van bronnen (bestand/link blijft open), niet-afgevangen uitzonderingen, duidelijk verkeerde voorwaarden (>= in plaats van >), suggesties voor hernoemen, leesbaarheid, ontbrekende hoofdletters, eenvoudige beveiligingsgeurtjes (zoals aaneenschakeling van SQL-tekenreeksen), detectie van dubbele code.

Zwakke punten: Diepe tekortkomingen die uw bedrijfsregels schenden, maar context en timing vereisen, zoals syntactisch correcte logica, architecturale compliance, echte knelpunten in de prestaties en gelijktijdigheidsfouten. AI produceert ook valse positieven (iets dat niet echt een probleem is, voor een probleem aanzien) en valse negatieven (het missen van de echte bug). Daarom is de output ervan een "waarschuwingslijst", en geen definitief oordeel.

Let op: het feit dat de AI ‘geen probleem’ zegt, bewijst niet dat de code correct is. Valse negatieven zwijgen; De gevaarlijkste fouten zijn fouten die nooit in de recensie worden genoemd.

Systematische beoordelingsstappen

  1. Geef de context. Voeg het doel van de wijziging, het relevante issue en de eventuele acceptatiecriteria toe aan de prompt. Doelloze beoordeling leidt tot doelloze interpretaties.
  2. Verdeel het in categorieën. Vraag het model om de bevindingen te classificeren als "bug/beveiliging/prestaties/leesbaarheid/stijl"; Zo scheid je het kritische van het lawaai.
  3. Vraag een ernstlabel aan. Geef elke bevinding een beoordeling 'hoog/gemiddeld/laag' en vermeld 'oorzaak' en 'aanbevolen correctie'.
  4. Filter het met je eigen ogen. Evalueer elke bevinding: is het echt (verifieer), is het vals positief (schrijf een rechtvaardiging), ontbreekt er iets (voeg je eigen kennis toe).
  5. Controleer kritieke paden handmatig. Lees en voer zelf routes rondom geld, identiteit, autorisatie en gegevensverwijdering uit zonder afhankelijk te zijn van AI.

Drie mini-hoesjes

Geval 1 — Stille nulfout gedetecteerd. Eén team liet AI een PR van 380 regels vooraf beoordelen. Het model markeerde een manier waarop een extern serviceantwoord nul kon zijn, maar hier werd in de code niet op gecontroleerd. De menselijke recensent heeft dit pad geverifieerd en een nulcontrole toegevoegd; Een soortgelijke fout veroorzaakte een productieonderbreking van 2 uur in het voorgaande kwartaal.

Geval 2 — Vals-positieve eliminatie. De AI signaleerde in een lus een “mogelijk prestatieprobleem”. De recensent sloot dit af als een vals positief, wetende dat de lus alleen werkt met maximaal 5 elementen (hij loopt over een enum). Het model, dat de context niet kende, waarschuwde; De persoon die de context kende, nam de juiste beslissing.

Geval 3 – AI heeft een bedrijfsregelfout gemist. Hoewel een kortingsaccount volgens de campagneregel maximaal 30% mag bedragen, stond de code 50% toe. De AI heeft deze syntactisch perfecte logische fout nooit opgemerkt; omdat hij de regel niet kende. De bug werd in de review ontdekt door de producteigenaar die de acceptatiecriteria kende. Les: validatie van bedrijfsregels is mensenwerk.

Vier kopieerbare sjablonen

Doelgerichte, gecategoriseerde beoordeling:

Rol: Nauwgezette code-reviewer. Doel van de wijziging: {{purpose / issue}}Bekijk dit verschil. Geef bevindingen op in deze categorieën: [Bug] [Beveiliging][Prestatie] [Leesbaarheid] [Stijl]. Voor elke bevinding: bestand:rij, ernst (hoog/gemiddeld/laag), oorzaak, aanbevolen oplossing. Markeer "mogelijk" als u het niet zeker weet. Je kent de regels van het zakendoen niet; Vraag me naar plaatsen waar regels vereist zijn.{{diff}}

Ter voorbereiding op het beoordelen van uw eigen code:

Bekijk deze wijziging voordat u een PR opent. Zoek naar: ontbrekende null/bugcheck, bronlek, edge case, geheim, niet-geteste branch. Zet de bevindingen in volgorde van prioriteit; stel voor elke correctie 1 regel voor.{{code}}

Jacht op randgevallen:

Maak een lijst van de ingangen en situaties waarin deze functie mogelijk kapot gaat: leeg, null, te groot, negatief, gelijktijdige oproep, netwerkfout, gedeeltelijke gegevens. Schrijf voor elk geval het verwachte gedrag op en wat de huidige code zal doen.{{function}}

Beveiligingsgeurscanning (pre-screening):

Zoek naar algemene beveiligingsgeuren in deze code: SQL/commando-aaneenschakeling, niet-gevalideerde invoer, onveranderlijk ingebed geheim, onveilige deserialisatie, gebrek aan controle van bevoegdheden. Verdeel de bevindingen in "zeker / waarschijnlijk / kennis". Dit is een voorlopige screening; Het is geen definitieve uitspraak.{{code}}

Zwakke prompt/sterke prompt

Zwak: “Zit er een fout in dit PR?”
Sterk: "Doel: couponkorting toevoegen aan het totaal van de winkelwagen (korting mag niet meer zijn dan 30% - u kunt deze regel niet zelf verifiëren, vertel me gewoon of de code een bovengrens oplegt). Onderzoek diff; geef bevindingen per categorie + ernst + voorgestelde correctie, markeer 'mogelijk' als u het niet zeker weet. [diff]"

De sterke versie geeft duidelijk de bedoeling, de bedrijfsregel en de grenzen van de AI aan; Er komen dus bruikbare bevindingen en het gebied dat onbekend is voor het model blijft duidelijk.

Soort zoeken

AI-betrouwbaarheid

de rol van de mens

Nul-/foutcontrole ontbreekt

hoog

Verifieer en pas toe

Leesbaarheid/stijl

hoog

Kies op voorkeur

Simpele veiligheidsgeur

middelmatig

Voltooien, scannen met voertuig

Naleving van bedrijfsregels

laag

Het is volkomen menselijk.

Gelijktijdigheid/architectuur

laag

Deskundige beoordeling is vereist

AI Review is geen vervanging voor menselijke review

Positioneer AI-review als een ‘eerste filter’: een goedkope, snelle, onvermoeibare voorlopige pass. Dit filter bevrijdt de aandacht van de menselijke recensent van onbelangrijke details (een spatie, een naam) en leidt deze naar plaatsen waar echt over nagedacht moet worden: de bedrijfsregel, de architectuur, het beveiligingsresultaat. Maar goedkeuring voor de fusie is de handtekening van een verantwoordelijke persoon binnen het team. Onafhankelijke beoordeling door ten minste één competente ingenieur is verplicht voor veiligheidskritische wijzigingen.

Tip: Lees de lijst met bevindingen die de AI oplevert als ‘dingen om te controleren’ in plaats van als ‘te doen’. Controleer elk item en pas het toe, of schrijf in één zin op waarom je het hebt gehaald; deze tracering maakt de beoordeling controleerbaar.

Veel voorkomende fouten

  • Het betekent "AI keek, het is schoon". Dit is een vals gevoel van vertrouwen vanwege valse negatieven.
  • Geen context geven. Zonder doel- en acceptatiecriteria levert het model slechts oppervlakkige stijlinterpretaties op.
  • Het blindelings toepassen van false positives. Het oplossen van elke waarschuwing van het model kan de lopende code verstoren.
  • Het model vragen naar de bedrijfsregel. Het model kent de regel niet; Het is aan de mens om dit te verifiëren.
  • Discrimineer geweld niet. Als u een kritieke beveiligingsbevinding en een naamsuggestie in dezelfde tas stopt, overschaduwt u wat belangrijk is.

Samengevat

AI is een onvermoeibaar eerste filter bij codebeoordeling: het vangt null-/error-misses, edge cases op en eenvoudige beveiliging ruikt goed; maar het is zwak op het gebied van context-vereiste tekortkomingen zoals bedrijfsregels, architectuur en gelijktijdigheid, en produceert zowel valse positieven als valse negatieven. Vraag bevindingen op per categorie en ernst, filter ze allemaal met menselijke intelligentie en verifieer handmatig kritieke paden. Goedkeuring is altijd de handtekening van een verantwoordelijke ingenieur.

Applicatie taak

Selecteer een reëel of recent PR/diff. Laat de AI het eerst beoordelen met de sjabloon ‘objectief gerichte categoriebeoordeling’. Zet de bevindingen in een tabel en beslis voor elk ervan: waar (ik heb het geverifieerd), fout-positief (dit is mijn redenering) of geïmplementeerd worden. Ga dan zelf op pad en probeer in ieder geval één ding te vinden (vooral een business rule of edge case) dat de AI mist en schrijf dat op.

controlelijst

  • [ ] Ik gebruik AI-beoordeling als eerste filter, niet als goedkeuring.
  • [ ] Ik voeg het doel en de acceptatiecriteria toe aan de beoordelingsprompt.
  • [ ] Ik scheid de bevindingen van de ruis per categorie en verlang er sterk naar.
  • [ ] Ik filter bewust elke bevinding om te bevestigen/vals-positief/toe te passen.
  • [ ] Als mens controleer ik de naleving van de bedrijfsregels en de architectuur.
  • [ ] Ik heb goedkeuring nodig van een gekwalificeerde ingenieur voor veiligheidskritische wijzigingen.