Sammanhang: Android är ett programmeringsspråk baserat på Java och ett operativsystem för inbyggda och mobila enheter, vars övre lager är skrivna i själva Android-språket. Som språk har den ett utökat händelsebaserat bibliotek och dynamisk inflation av grafiska vyer från deklarativa XML-layout-filer. En statisk analysator för Android-program måste överväga sådana funktioner, för korrekthet och precision. Mål: Vårt mål är att utöka Julias statiska analysator, baserad på abstrakt tolkning, att utföra formellt korrekta analyser av Android-program. Den här artikeln är en ingående beskrivning av en sådan utvidgning, av de svårigheter som vi stod inför och av de resultat som vi fick. Metod: Vi har utökat klassanalysen av Julia analysatorn, som ligger i hjärtat av många andra analyser, genom att överväga några Android nyckelspecifika funktioner såsom den potentiella förekomsten av många ingångspunkter till ett program och inflationen av grafiska vyer från XML genom reflektion. Vi har också avsevärt förbättrat precisionen i nullness analys på Android-program. Resultat: Vi har analyserat med Julia de flesta Android-provprogram av Google och några större öppna källkodsprogram. Vi har tillämpat tiotals statiska analyser, inklusive klasssändning, död kod, nullness och avslutande analys. Julia har automatiskt hittat fel, brister och ineffektivitet både i Google-proverna och i applikationerna med öppen källkod. Slutsats: Julia är den första ljud statiska analysatorn för Android-program, baserat på en formell grund såsom abstrakt tolkning. Våra resultat visar att det kan analysera verkliga tredje part Android-program, utan någon användaranmärkning av koden, ger formellt korrekta resultat på högst 7 minuter och på standard hårdvara. Därför är den redo för en första industriell användning.
Julia är ett statiskt analysverktyg baserat på abstrakt tolkning, först utvecklad för Java och nyligen utökat till Android REF.
Static analysis of Android programs
{'venue': 'CADE', 'journal': None, 'mag_field_of_study': ['Computer Science']}