← Nieuwste papers
💻 computer science

SACS: A Code Smell Dataset using Semi-automatic Generation Approach

Deze paper introduceert SACS, een open-source dataset met meer dan 10.000 gelabelde voorbeelden per code smell (Long Method, Large Class en Feature Envy), die is gegenereerd via een semi-automatische aanpak die automatisch gegenereerde kandidaten combineert met gerichte menselijke validatie om hoge kwaliteit en schaalbaarheid te garanderen.

Oorspronkelijke auteurs: Hanyu Zhang, Tomoji Kishi

Gepubliceerd 2026-04-21
📖 4 min leestijd☕ Koffiepauze-leesvoer

Oorspronkelijke auteurs: Hanyu Zhang, Tomoji Kishi

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 bibliotheek hebt vol met boeken (software). Sommige boeken zijn perfect geschreven, makkelijk te lezen en makkelijk aan te passen. Maar andere boeken zijn een puinhoop: ze hebben hoofdstukken die zo lang zijn dat je er een ladder voor nodig hebt, hoofdstukken die zo vol staan met informatie dat ze bijna exploderen, of hoofdstukken die constant naar andere boeken in de bibliotheek verwijzen in plaats van zelf iets te doen.

In de programmeerwereld noemen we deze "slechte schrijfstijlen" Code Smells (geurige code). Ze zijn geen directe fouten die het programma laten crashen, maar ze maken het programma moeilijk te onderhouden, te begrijpen en te verbeteren.

De auteurs van dit paper, Hanyu Zhang en Tomoji Kishi, hebben een probleem opgelost: Hoe maak je een enorme verzameling van deze "slechte boeken" om te kunnen oefenen, zonder dat je 100 jaar moet werken?

Hier is hoe ze dat deden, vertaald naar een simpel verhaal:

1. Het Probleem: De "Moeilijke Taak"

Om slimme computers (kunstmatige intelligentie) te leren herkennen wat een "slechte code" is, heb je duizenden voorbeelden nodig.

  • Manueel doen: Je zou 20 programmeurs kunnen vragen om urenlang te lezen en te zeggen: "Ja, dit is een slecht hoofdstuk." Dit is extreem duur, traag en mensen zijn niet altijd het eens (wat is nu precies te lang?).
  • Automatisch doen: Je kunt een robot laten knoeien met goede code om er slechte van te maken. Dit is snel, maar de robot maakt soms "nep-slechte code" die niet echt slecht is, of mist echte fouten.

2. De Oplossing: De "Half-Automatische Chef-Kok"

De auteurs hebben een half-automatische aanpak bedacht. Stel je voor dat je een grote keuken hebt:

  1. De Robot-Assistent (Automatisch): De robot neemt een recept (goede code) en past een paar simpele regels toe om er een "slecht" recept van te maken. Bijvoorbeeld: "Kopieer al het werk van de sous-chef naar de hoofdkok" (dit maakt de hoofdkok overbelast = Large Class). Of: "Laat de kok 50 ingrediënten van een ander station gebruiken" (dit heet Feature Envy).
  2. De Filter (De Metingen): De robot kijkt naar de resultaten.
    • Als het recept duidelijk een ramp is (bijvoorbeeld: 500 regels tekst in één zin), zegt de robot: "Dit is zeker slecht!" en legt het direct op de stapel "Goed voor gebruik".
    • Als het recept moeilijk te beoordelen is (bijvoorbeeld: 25 regels tekst), zegt de robot: "Ik weet het niet zeker, vraag de Chef."
  3. De Chef (Menselijke Controle): De menselijke expert kijkt alleen naar die twijfelachtige gevallen. Omdat ze niet naar de duidelijke gevallen hoeven te kijken, kunnen ze veel sneller werken. Ze gebruiken een speciaal hulpmiddel (een plugin voor programmeurs) om snel te stemmen: "Ja, dit is een geurige code" of "Nee, dit is prima."

3. De Drie "Slechte Geuren" die ze hebben gemaakt

Ze hebben zich gefocust op drie specifieke soorten "slechte schrijfstijlen":

  • Long Method (Te lange methode): Een functie die zo lang is dat je de draad kwijtraakt. Analogie: Een zin in een boek die 10 pagina's lang is zonder punten.
  • Large Class (Te grote klasse): Een klasse die te veel verantwoordelijkheden heeft. Analogie: Een persoon die tegelijkertijd kok, conciërge, boekhouder en tuinman is.
  • Feature Envy (Jaloerse functie): Een functie die constant naar de eigenschappen van een ander object kijkt in plaats van haar eigen werk te doen. Analogie: Een gast die constant naar het eten van de buurman kijkt in plaats van zijn eigen bord op te eten.

4. Het Resultaat: De "SACS" Bibliotheek

Uiteindelijk hebben ze een enorme openbare bibliotheek gecreëerd genaamd SACS.

  • Het bevat meer dan 10.000 voorbeelden van elk van de drie "slechte geuren".
  • Het bevat ook duizenden voorbeelden van "goede code" om te vergelijken.
  • Het is gratis beschikbaar voor iedereen die wil leren hoe je software beter kunt maken.

Waarom is dit belangrijk?

Vroeger was het alsof je wilde leren autorijden, maar je had alleen een paar oude, stoffige auto's om mee te oefenen. Met deze nieuwe dataset hebben ze een groot oefenterrein gebouwd met duizenden auto's die expres "slecht" zijn ingesteld.

Dit stelt onderzoekers en programmeurs in staat om slimme computers te trainen die in de toekomst automatisch kunnen zeggen: "Hé, hier heb je een geurige code, en hier is hoe je het kunt repareren."

Kortom: Ze hebben een slimme manier gevonden om de "slechte code" te simuleren, de twijfelgevallen door mensen te laten controleren, en zo een perfecte trainingsset te maken voor de toekomst van software.

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 →