Abstract-JavaScript är ett allmänt använt programmeringsspråk som gör omfattande användning av asynkron beräkning, särskilt i form av asynkrona callbacks. Dessa callbacks används för att hantera uppgifter, från GUI-händelser till nätverksmeddelanden, på ett icke-blockerande sätt. Asynkrona callbacks presenterar utvecklare med två utmaningar. För det första är JavaScripts felhanteringsmekanism för försök/fångst inte tillräcklig för korrekt felhantering i asynkrona sammanhang. Som svar, JavaScript community har kommit att förlita sig på fel-första protokollet, en informell programmering idiom som inte upprätthålls eller kontrolleras av körtiden. För det andra, JavaScript callbacks är ofta bona, vilket gör dem svåra att hantera (även känd som callback hell). Lyckligtvis är en ny språk förlängning som kallas löften ett alternativ till asynkrona callbacks. Antagandet av löften har emellertid gått långsamt, eftersom det är en komplicerad uppgift att omfaktorisera den befintliga koden för att använda löften. Vi presenterar en uppsättning av programanalys tekniker för att upptäcka fall av asynkrona callbacks och att refaktor sådana callbacks, inklusive callbacks med fel-första protokollet, i löften. Vi implementerar våra tekniker i ett verktyg som kallas PROMISSLAND. Vi utför en manuell analys av fyra JavaScript-applikationer för att utvärdera verktygets precision och recall, som i genomsnitt är 100% respektive 83%. Vi utvärderar PROMISESLAND på 21 stora JavaScript-applikationer, och finner att PROMISESLAND (1) korrekt refaktors callbacks till löften, (2) överträffar en nyligen relaterad refaktoring teknik, och (3) körs i under tre sekunder på alla våra utvärderingsmål.
Gallaba m.fl. REF fokuserade på användning av asynkrona callbacks i JavaScript.
Refactoring Asynchrony in JavaScript
{'venue': '2017 IEEE International Conference on Software Maintenance and Evolution (ICSME)', 'journal': '2017 IEEE International Conference on Software Maintenance and Evolution (ICSME)', 'mag_field_of_study': ['Computer Science']}