← Nieuwste papers
🤖 AI

The Patchwork Problem in LLM-Generated Code

Dit artikel identificeert en formaliseert het "patchwork-probleem", een falen van de structurele coherentie in door LLM's gegenereerde code waarbij lokaal geldige patches globaal defecte systemen creëren die standaardtesten omzeilen, en stelt een hybride verificatiekader en een nieuwe foutentaxonomie voor om deze kritieke, modelspecifieke defecten aan te pakken.

Oorspronkelijke auteurs: Viraaji Mothukuri, Reza M. Parizi

Gepubliceerd 2026-07-13
📖 6 min leestijd🧠 Diepgaand

Oorspronkelijke auteurs: Viraaji Mothukuri, Reza M. Parizi

Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dit is een AI-gegenereerde uitleg van het onderstaande artikel. Het is niet geschreven of goedgekeurd door de auteurs. Raadpleeg het oorspronkelijke artikel voor technische nauwkeurigheid. Lees de volledige disclaimer

Stel je voor dat je een enorme, ingewikkelde LEGO-stad aan het bouwen bent. Je vraagt een superintelligente robot om een paar nieuwe gebouwen in elkaar te klikken. De robot doet zijn werk uitstekend: de steentjes passen, de kleuren komen overeen en de kleine raampjes zien er perfect uit. Als je inzoomt op alleen die nieuwe gebouwen, zien ze er onberispelijk uit.

Maar hier komt de adder onder het gras: op het moment dat je probeert die nieuwe gebouwen in je bestaande stad te pluggen, begint de hele boel te wankelen en uit elkaar te vallen.

Dit is het "Patchwork Problem" (het lappendekenprobleem) dat onderzoekers Viraaji Mothukuri en Reza M. Parizi ontdekten in code geschreven door Large Language Models (LLM's). Ze ontdekten dat door AI gegenereerde code vaak correct lijkt in isolatie — het slaagt voor basis-tests en compileert zonder fouten — maar het faalt vaak op het moment dat het wordt geïmplementeerd in een echt softwaresysteem.

De ontbrekende onzichtbare lijm

Het paper betoogt dat het probleem meestal niet is dat de AI "slechte" logica schrijft. In plaats daarvan is het een structureel probleem. Denk er zo over na:

  • De "Fantoom"-sleutels: De AI kan een deur schrijven die een sleutel nodig heeft met de naam "MasterKey", maar die sleutel is nooit in jouw huis gemaakt. De code compileert prima, maar wanneer je de deur probeert te openen, crasht het systeem omdat de sleutel niet bestaat.
  • De ontbrekende blauwdruk: De AI kan een kamer bouwen uitgaande van de aanname dat er een raam is, maar de blauwdruk van het hele huis zegt dat die muur massief is. De kamer ziet er op zichzelf geweldig uit, maar past niet bij het ontwerp van het huis.
  • De spookafhankelijkheden: De AI kan zeggen: "Ik heb een speciaal gereedschap genaamd 'SuperHammer' nodig om dit te repareren," maar 'SuperHammer' zit niet in jouw gereedschapskist en het bestaat niet eens in de catalogus van de winkel.

De onderzoekers noemen dit het Patchwork Problem omdat de AI kleine stukjes code aan elkaar naait die lokaal perfect zijn, maar globaal incoherent. Het zijn als een deken waarbij elk vierkantje prachtig is, maar de vierkantjes niet echt met elkaar verbonden zijn.

Waarom je huidige veiligheidsnetten blind zijn

Je zou kunnen denken: "Maar hebben we niet hulpmiddelen om deze fouten op te vangen? Zoals spellingcontrole of testsuites?"

Het paper sluit expliciet de mogelijkheid uit dat standaardhulpmiddelen voldoende zijn. Sterker nog, de onderzoekers ontdekten dat 97% van deze structurele fouten ongezien langs de gebruikelijke controles glipt:

  • Type Checkers (de spellingcontrole van code) miste bijna alle fouten.
  • Test Suites (de oefenruns) vingen ze ook niet op.
  • Security Scanners (de inbraakalarmen) waren volledig blind voor deze specifieke problemen.

Het paper stelt dat deze tools zoeken naar "functionele" bugs (zoals een rekenfout), maar heel slecht zijn in het opsporen van "structurele" bugs (zoals een ontbrekende verbinding tussen twee onderdelen van het systeem). Het is als een beveiliger die controleert of iedereen een kaartje heeft, maar nooit controleert of de persoon met het kaartje daadwerkelijk de VIP-ruimte in mag.

Het Detectieve Framework

Om dit op te lossen, bouwden de auteurs een nieuw soort detectieframework. In plaats van de code alleen regel voor regel te lezen, veranderden ze de gehele codebase in een gigantische kaart van verbindingen (een graaf).

Stel je een stadsplattegrond voor waarbij je elke weg, elk gebouw en elke nutsvoorziening kunt zien. Hun framework controleert of:

  1. De wegen aansluiten: Leidt deze nieuwe straat daadwerkelijk naar een bestaande buurt, of eindigt hij in een veld?
  2. De stroomlijnen overeenkomen: Sluit dit nieuwe gebouw aan op het juiste voltage, of slaat er een zekering door?
  3. De regels worden gevolgd: Als elk ander gebouw in deze zone een bewaker heeft, heeft dit nieuwe gebouw dat dan ook?

Ze testten dit op 336 codegeneraties van twee topklasse AI-modellen (GPT-4o en Claude 3.5 Sonnet). De resultaten waren verbijsterend:

  • Het framework vond 67 structurele fouten.
  • 65 van die fouten (97%) waren volledig onzichtbaar voor de standaardhulpmiddelen.
  • De fouten waren niet willekeurig; ze vielen uiteen in acht specifieke categorieën, zoals "Symbol Resolution Failures" (verwijzen naar zaken die niet bestaan) en "Security Structural Regressions" (vergeten de achterdeur op slot te doen).

De modellen zijn verschillend, maar beide gebrekkig

Het paper suggereert ook dat niet alle AI-modellen dezelfde fouten maken. Het is niet zo dat het ene model simpelweg "slechter" is dan het andere; ze hebben verschillende "persoonlijkheden" als het gaat om fouten.

  • GPT-4o maakte vaker fouten in de verbindingen tussen verschillende bestanden, zoals cross-file contract schendingen (een brief sturen naar het verkeerde adres) en het hallucineren van imports of afhankelijkheden.
  • Claude 3.5 Sonnet was eerder geneigd de interne logica van een enkel bestand te verpesten, specifelijk door functies te genereren die een retourtype declareerden, maar in bepaalde code-paden geen waarde teruggeven.

Dit betekent dat je niet zomaar van het ene AI-model naar het andere kunt overstappen en verwachten dat het probleem verdwijnt. De aard van de "patchwork" verandert afhankelijk van wie de stukjes aan elkaar naait.

De test in de echte wereld

Om er zeker van te zijn dat dit niet slechts een laboratoriumexperiment was, keken de onderzoekers naar 43 echte projecten die volledig of grotendeels door AI zijn gebouwd. Ze ontdekten dat deze structurele fouten overal aanwezig waren.

  • In één echte app, genaamd hypertropher-app, vonden ze 11 structurele fouten die standaardhulpmiddelen misten, waaronder ontbrekende configuratiesleutels die de app direct zouden laten crashen.
  • In een ander project, VoiceTradeWithSchwab, vonden ze 92 fouten, waaronder een oneindige lus en ontbrekende beveiligingscontroles bij handelsfuncties.

De kern van het verhaal

Het paper concludeert dat naarmate we meer AI gebruiken om code te schrijven, we een groeiende "blind spot" creëren in onze softwarekwaliteit. De code ziet er goed uit, slaagt voor de tests en compileert, maar is structureel onveilig.

De auteurs beweren niet dat ze het probleem definitief hebben "opgelost". In plaats daarvan suggereren ze dat we een nieuw soort verificatie nodig hebben — een die kijkt naar de grote-lijnen-verbindingen in plaats van alleen naar de individuele onderdelen. Ze stellen voor dat we voor de meest complexe taken (zoals het koppelen van configuratie, beveiliging en datastructuren) gespecialiseerde detectoren nodig hebben die de onzichtbare barsten kunnen opsporen voordat de code de gebruiker bereikt.

Kortom: Alleen omdat de AI een perfect baksteentje heeft gebouwd, betekent niet dat hij een huis heeft gebouwd dat blijft staan. We hebben nieuwe tools nodig om de fundering te controleren.

Verdrinkt u in papers in uw vakgebied?

Ontvang dagelijkse digests van de nieuwste papers die bij uw onderzoekswoorden passen — met technische samenvattingen, in uw taal.

Probeer Digest →