Nyligen lades löften till ECMAScript 6, JavaScript-standarden, för att ge bättre stöd för asynkronin som uppstår i användargränssnitt, nätverkskommunikation och icke-blockerande I/O. Med hjälp av löften, programmerare kan undvika vanliga fallgropar av händelsedriven programmering såsom händelse tävlingar och djupt inbäddade kontraintuitiv kontroll flöde som kallas łcallback hellž. Tyvärr, löften har komplexa semantik och den intrikata kontrollś och data-flöde som finns i löftesbaserad kod hindrar programförståelse och kan lätt leda till buggar. Löftet graf föreslogs som en grafisk hjälp för att förstå och debugging löfte-baserad kod. Det täckte dock inte alla löftesrelaterade funktioner i ECMAScript 6, och inte presentera eller utvärdera någon teknik för att bygga löfte grafer. I det här dokumentet utvidgar vi begreppet lovande grafer till att omfatta alla löftesrelaterade funktioner i ECMAScript 6, inklusive standardreaktioner, undantag, och synkroniseringsoperationer ras och alla. Dessutom rapporterar vi om byggandet och utvärderingen av Promise Keeper, som utför en dynamisk analys för att skapa lovande grafer och slutsatser gemensamma löfte anti-mönster. Vi utvärderar Promise Keeper genom att tillämpa den på 12 open source löftesbaserade Node.js applikationer. Våra resultat tyder på att de löftesgrafer som konstruerats av Promise Keeper kan ge utvecklare värdefull information om förekomster av vanliga anti-mönster i deras löftesbaserade kod, och att löfte grafer kan konstrueras med acceptabel körtid overhead.
Mer nyligen, Alimadadi et al. REF presenterade en dynamisk analysteknik för att upptäcka löftesrelaterade fel och motmönster i JavaScript-program.
Finding broken promises in asynchronous JavaScript programs
{'venue': 'PACMPL', 'journal': None, 'mag_field_of_study': ['Computer Science']}