Flera program analysverktyg-såsom plagiat upptäckt och felsökning-rely på att veta en bit av kodens relativa semantiska betydelse. Till exempel bör en plagiatdetektor inte bry sig om att rapportera två program som har en identisk enkel loop räknare test, men bör rapportera program som delar mer distinkt kod. Traditionella programanalystekniker (t.ex. att hitta data och kontrollberoenden) är användbara, men säg inte hur överraskande eller gemensam en kodlinje är. Forskare inom bearbetning av naturligt språk har stött på ett liknande problem och tagit itu med det med hjälp av en n-grammodell av textfrekvens, härledd från statistik som beräknas över textkorpora. Vi föreslår och beräknar en n-grammodell för programmeringsspråk, beräknad över en corpus på 2,8 miljoner JavaScript-program som vi laddat ner från webben. I motsats till tidigare tekniker beskriver vi en kod n-gram som en subgraf av programberoende grafen som innehåller alla noder och kanter som kan nås i n steg från uttalandet. Vi kan räkna n-gram i ett program och räkna frekvensen av n-gram i corpus, vilket gör att vi kan beräkna tf-idf-liknande åtgärder som fångar den olika betydelsen av olika rader av kod. Vi demonstrerar kraften i detta tillvägagångssätt genom att implementera en plagiatdetektor med noggrannhet som slår tidigare tekniker, och ett felsökningsverktyg som upptäckte över ett dussin tidigare okända fel i en samling av verkliga utplacerade program.
I REF fokuserar författarna på plagiering av koder.
Using web corpus statistics for program analysis
{'venue': 'OOPSLA', 'journal': None, 'mag_field_of_study': ['Computer Science']}