GitEvo: Code Evolution Analysis for Git Repositories
Dit artikel presenteert GitEvo, een meertalige en uitbreidbare tool die Git-niveau en code-niveau analyse integreert om code-evolutie studies te ondersteunen voor professionals, onderzoekers en docenten.
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 gigantische, levende bibliotheek van softwarecode hebt. Elke keer dat een programmeur een wijziging aanbrengt, voegt hij een nieuwe pagina toe aan een boek, maar hij houdt ook een perfect dagboek bij van elke bewerking, wie het heeft gedaan en wanneer. Dit dagboek wordt een Git-repository genoemd.
Lama een tijdje hadden we twee verschillende manieren om naar deze bibliotheek te kijken:
- De Visie van de Bibliothecaris: Tools die konden vertellen hoeveel pagina's er zijn toegevoegd, wie ze heeft geschreven en wanneer het boek is bijgewerkt. Maar ze konden de werkelijke woorden op de pagina's niet lezen.
- De Visie van de Redacteur: Tools die de woorden konden lezen, het aantal zinnen konden tellen en de grammatica van een enkele pagina konden analyseren. Maar ze konden de geschiedenis niet zien; ze keken slechts naar één momentopname.
GitEvo is een nieuwe tool die fungeert als een superintelligente, tijdreizende redacteur. Het combineert beide visies, waardoor je kunt zien hoe de "woorden" van de code veranderen over de tijd, en niet alleen het aantal pagina's.
Hier is hoe het werkt, met behulp van eenvoudige analogieën:
1. De "Tijdreizende Camera"
Zie GitEvo als een camera die niet alleen een foto maakt van een gebouw; het maakt elke dag een foto van het gebouw gedurende tien jaar en plakt ze aan elkaar tot een film.
- De Oude Manier: Je kon tellen hoeveel stenen er elk jaar werden toegevoegd (Git-niveau), of de architectonische stijl van het gebouw op een specifieke dag analyseren (Code-niveau).
- De GitEvo Manier: Het kijkt hoe het gebouw evolueert. Het kan zeggen: "In 2020 begonnen de architecten meer glazen ramen te gebruiken (een specifiek programmeerpatroon), en tegen 2024 was de hele voorkant van de muur van glas gemaakt." Het verbindt de geschiedenis van het project met de details van de code.
2. De "Universele Vertaler"
Een van de grootste hoofdpijndossiers in software is dat verschillende talen (Python, Java, JavaScript) meestal verschillende tools vereisen om ze te lezen. Het is alsof je een Frans woordenboek nodig hebt voor Franse boeken en een Spaans woordenboek voor Spaanse boeken, zonder een manier om ze gemakkelijk te vergelijken.
GitEvo is als een universele vertaler die al deze talen tegelijk spreekt.
- Het gebruikt een krachtige "grammatica-engine" (genaamd Tree-sitter) die Python, JavaScript, TypeScript en Java kan lezen.
- In plaats van voor elke taal een nieuw script te schrijven, schrijft een gebruiker één script in Python, en GitEvo vertaalt dat script om de code in elk van die vier talen te begrijpen. Het is also als het hebben van één set verrekijkers die werkt voor vogels, vissen en zoogdieren.
3. Hoe je het gebruikt (Het "Receptenboek")
Het artikel legt twee manieren uit om GitEvo te gebruiken:
- De "Kant-en-klare Maaltijd" (Command Line): Als je gewoon een snel rapport wilt zien, kun je een eenvoudige opdracht typen, zoals een chef vragen om "een salade te maken". GitEvo genereert direct een rapport dat laat zien hoe de code groeide, hoeveel tests er zijn toegevoegd, of hoe complex de code werd over de tijd. Het geeft je een kant-en-klaar diagram of een spreadsheet.
- Het "Eigen Recept" (API): Als je een onderzoeker of een nieuwsgierige ontwikkelaar bent, kun je je eigen "recept" schrijven. Je kunt GitEvo vertellen: "Ik wil tellen hoe vaak de ontwikkelaars een specifiek type loop hebben gebruikt" of "Ik wil volgen hoe de hoeveelheid 'mock' tests (tests met nepdata) de afgelopen vijf jaar is toegevoegd." GitEvo voert vervolgens dit aangepaste recept uit over de gehele geschiedenis van het project en tekent een grafiek voor je.
4. Wat mensen ermee doen
Het artikel belicht drie belangrijke groepen die deze tool gebruiken:
- Onderzoekers (De Wetenschappers): Zij gebruikten GitEvo om meer dan 1,2 miljoen wijzigingen in code te bestuderen. Zo volgden ze bijvoorbeeld hoe vaak ontwikkelaars begonnen met "mocking" (een techniek voor testen) in verschillende talen, of hoe het gebruik van specifieke Python-functies (zoals "lambdas") over een decennium veranderde.
- Praktijkgebruikers (De Bouwers): Ontwikkelaars bij bedrijven zoals FastAPI gebruikten het om terug te kijken op hun eigen werk. Eén ontwikkelaar zei dat het geweldig was om "even afstand te nemen en het werk te zien dat we hebben gedaan." Het helpt hen trends te visualiseren, zoals: "Schrijven we meer tests?" of "Wordt onze code complexer?"
- Educatoren (De Leraren): In een universiteitsklas gebruikten meer dan 90 studenten GitEvo om echte software te verkennen. In plaats van alleen over softwareveranderingen te lezen, konden ze het daadwerkelijk gebeuren zien. Ze ontdekten dingen zoals: "Oh, dit project stopte met het gebruik van één type variabele en stapte over op een ander," wat hen hielp om de engineering-beslissingen te begrijpen.
De Kern van het Verhaal
GitEvo is een tool die de kloof overbrugt tussen geschiedenis (wat er in de repository is gebeurd) en inhoud (wat de code daadwerkelijk zegt). Het stelt iedereen in staat om de vraag te stellen: "Hoe is deze software geëvolueerd?" en een duidelijk, visueel antwoord te krijgen, ongeacht of de code in Python, Java of JavaScript is geschreven. Het verandert een rommelige geschiedenis van code-wijzigingen in een helder verhaal van groei en verandering.
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.