Vi presenterar Doop ramverket för poäng-till analys av Java-program. Doop bygger på idén att ange pekaranalysalgoritmer deklarativt, med hjälp av Datalog: ett logiskt språk för att definiera (rekursiva) relationer. Vi bär det deklarativa tillvägagångssättet längre än tidigare arbete genom att beskriva den fullständiga end-to-end-analysen i Datalog och optimera aggressivt med hjälp av en ny teknik som specifikt inriktar sig på mycket rekursiva Datalog-program. Som ett resultat, Doop uppnå flera fördelar, inklusive full ordning-av-magnitude förbättringar i körtid. Vi jämför Doop med Lhoták och Hendrens Paddle, som definierar konstens tillstånd för kontextkänsliga analyser. För exakt samma logiska punkter-till definitioner (och följaktligen identisk precision) Doop är mer än 15x snabbare än Paddle för en 1-samtals-plats känslig analys av DaCapo riktmärken, med lägre men fortfarande betydande hastigheter för andra viktiga analyser. Dessutom skalar Doop till mycket exakta analyser som är omöjliga med Paddle och Whaley et al.Bddbddb, som direkt tar upp öppna problem i tidigare litteratur. Slutligen är vår implementering modulär och kan enkelt konfigureras till analyser med ett brett spektrum av egenskaper, till stor del på grund av dess deklarativitet.
Doop REF implementerar olika pointer analysalgoritmer för Java-program, alla definierade deklarativt i Datalog.
Strictly declarative specification of sophisticated points-to analyses
{'venue': "OOPSLA '09", 'journal': None, 'mag_field_of_study': ['Computer Science']}