Bbabo NET

Wetenschap & Technologie Nieuws

Meta introduceerde een nieuwe statische analyser voor Android

Meta heeft een statische analysator ontwikkeld die deadlocks in Android Java-code detecteert zonder de code zelf uit te voeren. Het is in staat om codebases met honderden miljoenen regels te controleren.

De analyser wordt ingezet op het continue integratiesysteem van Meta, waar het elke commit in de Android-app-familie scant. In de afgelopen twee jaar hebben ontwikkelaars meer dan 200 fixes gemaakt als reactie op deadlock-rapporten, goed voor ongeveer 54% van alle fixes.

De Meta-analysator is open source en maakt deel uit van het Infer statische analysesysteem.

De ontwikkelaars gebruikten methoden van abstracte interpretatie. Voor elke methode berekent de parser een samenvatting van hoe deze zich zal gedragen in termen van het verkrijgen en vrijgeven van de vergrendeling, en ook of de methode zal worden uitgevoerd op de hoofdthread of een achtergrondthread. Dit gebeurt op een compositorische manier: elke methode wordt maximaal één keer samengevat en de samenvatting wordt gebruikt wanneer de bellers worden samengevat, wat voorspelbare hoge prestaties oplevert.

Het centrale deel van de methode is de set van kritische paren. Het kritische paar (A,B) legt het volgende feit vast: een methode probeert een vergrendeling op B te verkrijgen, en op dat moment bevat deze al precies zoveel vergrendelingen in set A. Deze gegevens, berekend over alle methoden, zijn voldoende om antwoord op de vraag of een impasse tussen twee gelijktijdige methoden.

De tool ontleedt niet alle bronbestanden in de toepassing. In plaats daarvan verwerkt het eerst alle methoden in gewijzigde revisiebestanden. Vervolgens past het, op basis van deze gegevens, heuristieken toe om methoden buiten de revisie te vinden die mogelijk een ervan in de revisie zouden kunnen blokkeren.

De ontwikkelaars beweren dat hun aanpak de analyser schaalbaar genoeg maakt om op grote codebases in Meta te worden ingezet.

Meta introduceerde een nieuwe statische analyser voor Android