De uitdaging van grote commits

Moderne ontwikkeling omvat vaak commits die veel bestanden wijzigen. Of het nu een grote functietoevoeging, een refactoring-inspanning of het samenvoegen van een langlopende branch is, grote commits kunnen de groottebeperkingen van AI-providers overschrijden. AI Diff Review lost dit op met intelligente batchverwerking die grote commits automatisch in beheersbare stukken splitst.

Hoe batchverwerking werkt

Wanneer een commit of geselecteerd bereik het actieve budget overschrijdt (256 KB voor cloudproviders, 128 KB voor lokale), splitst AI Diff Review de aanvraag automatisch in meerdere batches. Maar het splitst niet zomaar willekeurig—het gebruikt een geavanceerde verwantschaps-eerst strategie om gerelateerde bestanden bij elkaar te houden, wat de analysekwaliteit verbetert.

Verwantschapsstrategie

Het batchverwerkingssysteem gebruikt lichte heuristieken om te bepalen welke bestanden gerelateerd zijn:

Import- en pakketreferenties

Bestanden die symbolen importeren die in andere gewijzigde bestanden zijn gedefinieerd, worden als gerelateerd beschouwd. Als UserService.java bijvoorbeeld User importeert uit User.java, en beide zijn gewijzigd, worden ze samen gegroepeerd.

Symbolvermeldingen

Bestanden die klasse-, object- of functienamen vermelden die in andere gewijzigde bestanden zijn gedefinieerd, worden samen gegroepeerd. Dit vangt relaties op, zelfs wanneer expliciete imports niet aanwezig zijn.

Directory-nabijheid

Bestanden in hetzelfde pakket of directory worden als zwak gerelateerd beschouwd en dienen als tie-breaker wanneer andere relaties niet duidelijk zijn.

Clustering-algoritme

Het batchverwerkingssysteem bouwt een ongerichte grafiek van bestanden die door de bovenstaande relaties zijn verbonden, en berekent vervolgens verbonden componenten als initiële groepen. Dit zorgt ervoor dat bestanden die naar elkaar verwijzen bij elkaar blijven in dezelfde batch.

Verpakkingsstrategie

Groepen worden in batches geplaatst met behulp van een first-fit-decreasing algoritme op basis van geschatte aanvraaggrootte. Dit:

  • Behoudt groepen wanneer mogelijk (houdt gerelateerde bestanden bij elkaar)
  • Maximaliseert batchgrootte-efficiëntie
  • Zorgt ervoor dat elke batch onder de groottebeperking blijft

Omgaan met te grote groepen

Als een enkele groep gerelateerde bestanden het budget overschrijdt, wordt deze gesplitst op basis van breadth-first search (BFS) volgorde terwijl hoog-gewicht randen worden behouden. Dit betekent dat de sterkste relaties behouden blijven, zelfs wanneer splitsing noodzakelijk is.

Gebruikerservaring

Wanneer batchverwerking plaatsvindt, toont het toolvenster de voortgang als "Batch X/Y", waardoor duidelijk is dat meerdere batches worden verwerkt. Resultaten worden naadloos samengevoegd tussen batches, zodat u een geünificeerde weergave van alle bevindingen ziet. Sorteren, filteren en zoeken werken over alle resultaten alsof ze van een enkele analyse komen.

Standaard batchgroottes

Het systeem geeft de voorkeur aan batches van 3-7 bestanden elk wanneer er veel bestanden aanwezig zijn, maar exacte groottes variëren op basis van:

  • Diff- en inhoudsgrootte per bestand
  • Provider-specifieke groottebeperkingen
  • Verwantschapsrelaties

Deze balans zorgt voor efficiënte verwerking terwijl de analysekwaliteit behouden blijft.

Voordelen van intelligente batchverwerking

Betere analysekwaliteit

Door gerelateerde bestanden bij elkaar te houden, kan de AI context en relaties begrijpen, wat leidt tot nauwkeurigere bevindingen. Als u bijvoorbeeld zowel een modelklasse als de service ervan wijzigt, helpt het analyseren ervan samen de AI om de volledige impact van uw wijzigingen te begrijpen.

Automatische afhandeling

U hoeft commits niet handmatig te splitsen of u zorgen te maken over groottebeperkingen. De plugin regelt dit automatisch, zodat u zich op uw code kunt concentreren.

Naadloze ervaring

Resultaten worden automatisch samengevoegd, zodat u een geünificeerde weergave ziet, ongeacht hoeveel batches nodig waren. U hoeft resultaten niet handmatig te combineren of tussen verschillende analyses te schakelen.

Wanneer batchverwerking plaatsvindt

Batchverwerking wordt geactiveerd wanneer:

  • Een commit veel bestanden wijzigt (typisch 10+ bestanden)
  • Bestanden groot zijn (zelfs enkele grote bestanden kunnen batchverwerking activeren)
  • Volledige bestandsinhoud is opgenomen (verhoogt de grootte aanzienlijk)
  • De gecombineerde grootte de providerlimieten overschrijdt

Best practices

Commits gefocust houden

Hoewel batchverwerking grote commits goed afhandelt, zijn kleinere, gefocuste commits nog steeds beter voor code review en begrip. Overweeg grote wijzigingen op te splitsen in logische commits wanneer mogelijk.

Vertrouwen op het systeem

Het batchverwerkingsalgoritme is ontworpen om relaties te behouden en de analysekwaliteit te handhaven. Vertrouw erop dat gerelateerde bestanden samen worden geanalyseerd, zelfs over batches heen indien nodig.

Alle resultaten bekijken

Aangezien resultaten worden samengevoegd, zorg ervoor dat u bevindingen van alle batches bekijkt. De geünificeerde weergave maakt dit eenvoudig, maar wees u ervan bewust dat grote commits veel bevindingen over meerdere batches kunnen hebben.

Technische details

Het batchverwerkingssysteem gebruikt een snelle aanvraaggrootte-schatting die de grootte van de JSON-omwikkelde payload benadert om onder de limiet per batch te blijven. Deze schatting vindt plaats vóór verzending, waardoor een efficiënt gebruik van providerlimieten wordt gegarandeerd.

Conclusie

Intelligente batchverwerking maakt het mogelijk om grote commits te analyseren zonder handmatige interventie. Door gerelateerde bestanden bij elkaar te houden en batchgroottes automatisch te beheren, zorgt AI Diff Review voor uitgebreide analyse, ongeacht de commitgrootte.

De verwantschaps-eerst strategie handhaaft de analysekwaliteit terwijl de automatische splitsing ervoor zorgt dat u commits van elke grootte kunt analyseren. Gecombineerd met naadloze resultaat-samenvoeging biedt batchverwerking een soepele ervaring, zelfs voor de grootste wijzigingen.

Klaar om grote commits te analyseren? Installeer AI Diff Review en zie hoe het uw grootste wijzigingen afhandelt.