(a) Kodavsnitt för användning av Google Maps geokod-API (b) Dockerfil som innehåller miljöspecifikation som krävs för att köra kodavsnitt. Kredit:Horton &Parnin
Ett team av forskare vid North Carolina State University har nyligen genomfört en empirisk analys av den körbara statusen för Python-kodsnuttar som delas på GitHub. Deras studie, förpublicerad på arXiv, presenterar också Gistable, en ny databas med körbara Python-kodsnuttar på GitHubs huvudsystem, som skulle kunna möjliggöra reproducerbara studier inom området mjukvaruteknik.
Varje dag, mjukvaruutvecklare över hela världen skapar och delar kod online för att demonstrera och skissera nya programmeringskoncept. GitHub är en av de största onlineplattformarna där utvecklare kan dela sina kodavsnitt och samarbeta kring utveckling av programvara. För närvarande, den innehåller över 300, 000 Python -utdrag och över 4,5 miljoner gister på en mängd olika programmeringsspråk.
Även om kodavsnitt som publiceras online kan vara mycket användbara, ibland är de inte direkt körbara av andra. Detta kan bero på analysfel i koden eller problem med att köra kodavsnitt i miljöer som innehåller ouppfyllda beroenden.
För att få en bättre förståelse för hur många kodavsnitt som finns på GitHubs huvudsakliga system som faktiskt är körbara, forskare vid North Carolina State University genomförde en grundlig utvärdering av körbarheten för offentligt tillgängliga Python -skript som finns på plattformen. Deras studie syftade till att identifiera vanliga problem med körning av kodavsnitt, som skulle kunna ge värdefull insikt för vidare forskning om automatiserad mjukvarukonfigurationshantering.
I deras studie, forskarna presenterade också Gistable, en databas och ett utökningsbart ramverk som bygger på GitHubs huvudsakliga system. Gistable innehåller 10, 259 Python -kodavsnitt, varav cirka 5, 000 kommer med en Dockerfile för att konfigurera och köra dem utan importfel.
"Vårt arbete med Gistable motiverades som en del av ett större projekt om automatisk konfiguration av applikationsmiljöer, "Eric Horton, en av forskarna som genomförde studien, berättade Tech Xplore. "Med tanke på en kodbas, som utdragen som studerades i Gistable, vi vill hitta en process som kan bygga en tillräcklig exekveringsmiljö för dem utan att kräva input från en utvecklare. För att göra detta, vi fick först gå tillbaka och svara på ett par frågor. Först, är detta ett vanligt användningsfall? Vi behövde fastställa en baslinje för hur ofta befintliga applikationer behöver någon form av icke-trivial konfiguration. Andra, när det inte är körbart, vilken typ av konfiguration behövs för att möjliggöra exekvering?"
I deras studie, forskarna fann att 75,6 procent av de analyserade Python-principerna krävde betydande konfigurationer för att övervinna problem som saknade beroenden, konfigurationsfiler, beroende av ett specifikt operativsystem, eller andra miljökonfigurationsutmaningar. Dessutom, de antaganden som utvecklare gör om resursnamn när de försökte lösa konfigurationsfel visade sig vara korrekta mindre än hälften av gångerna.
"Vi fann att cirka 30 procent av vårt urval hör till kategorin" svårt att konfigurera ", med den vanligaste konfigurationssvårigheten att vara beroende av externa bibliotek, " Horton förklarade. "Vår forskning inom den närmaste framtiden kommer att fokusera på tekniker för att hitta och installera dessa bibliotek. Efteråt, vi hoppas kunna ta itu med andra vanliga konfigurationsproblem som upptäckts som en del av Gistable."
Övergripande, en otillräckligt konfigurerad miljö var den primära faktorn som hindrade Python-kodavsnitten från att vara körbara. Medan i vissa fall, korrekta programmiljökonfigurationer kan återställas automatiskt, andra krävde ytterligare ingripanden. I framtiden, forskarna planerar att undersöka strategier för att konsekvent utföra effektiva miljökonfigurationer.
"Jag tror att den mest meningsfulla prestationen av denna studie var vår undersökning av hur utvecklare utför konfigurationen manuellt, "Horton sa." Inte bara bekräftade deltagarnas svar att detta i många fall är ett svårt problem, men de hjälpte oss också att kategorisera saker som kan göra konfigurationen svår. Detta är mycket användbart, för det pekar oss på en konkret lista över artiklar för framtida forskning. "
© 2018 Tech Xplore