Automatiseeritud ning interaktiivne tööprotsess korrektse staatilise analüüsi kasutajasõbralikkuse parandamiseks
Date
2018
Authors
Journal Title
Journal ISSN
Volume Title
Publisher
Abstract
Staatiline analüüs võimaldab tarkvara arendajal tuvastada koodis leiduvaid viguning neid parandada enne, kui see jõuab reaalsesse kasutusse. Hoolimata sellest, et tänaseks päevaks on teada mitmeid häid analüüsimeetodeid, põhjustavad ennetatavad tarkvara vead siiski katkestusi kriitiliste rakenduste töös ning võimaldavad kolmandatel isikutel ligipääsu privaatsetele andmetele. Kuigi arendajad on teadlikud staatilise analüüsi kasutamise eelistest, takistavad mitmed asjaolud siiski selliste vahendite laialdasemat kasutuselevõttu. Üheks peamiseks probleemiks on anaüüsi vahendite keerukas ning tüütukasutatavus. Veelgi suuremat vastuseisu kohtavad korrektse (sound) staatilise anaüüsi vahendid, mis lubaksid potentsiaalselt kontrollida teatud tüüpi vigade puudumist programmis. Nende suureks miinuseks on võimalus vigade (valesti) tuvastamiseks ka osades tegelikult korrektsetes programmides.Käesolevas magistritöös uuritakse, mis viisil kasutatakse staatilise analüüsi vahendeid ettevõtetes ning pakutakse välja, kuidas oleks mõistlik integreerida analüüsi tarkvara arenduskeskkonda (IDE) ning tarkvara ehitust automatiseerivasse töövahendisse (build tool). Interaktiivse analüüsi ja automatiseeritud analüüsi tugev integreeritus võib ollaoluline komponent, mis paneks arendajad neid töövahendeid kasutama.Töö tulemusena valmis ka näidislahendus, mis integreerib lekke analüüsi (taintanalysis) IntelliJ ja Gradle töövahenditesse. Välja pakutud lahendus on sobilik lekke analüüsi jaoks, aga selle üldistamine keerulisemate analüüsimeetodite jaoks jääb lahtiseks probleemiks. Näidislahenduse arendus andis võimaluse uurida erinevaid lähenemisi kasutatavusele ning on kasulikuks esimeseks sammuks suurema lõppeesmärgi poole, milleks on kasutajasõbraliku korrektse staatilise analüüsivahendi loomine.
Static analysis allows software developers to detect and fix many types of errors in codebefore it is submitted to a production environment. Despite the availability of sophisticatedanalysis techniques, many preventable bugs still cause security vulnerabilitiesthat allow hackers to steal private information. Studies have shown that even thoughdevelopers recognize the benefits of static analysis there are many practical usabilityproblems preventing higher adoption rates.The challenge is even greater with sound analyzers that could potentially verify thetotal absence of specific types of bugs, but at the cost of rejecting some correct programs.This thesis investigates the current situation of adopting static analyzers in the industryand proposes an approach of integrating an analysis into the IDE and build system. Theseamless integration of both interactive and automated analysis may enable developersto adopt sound analysis tools.A prototype implementation of that static analysis workflow for tainting analysisin IntelliJ and Gradle is presented. The integration proposed works well for taintinganalysis used in the prototype, but many challenges remain to generalize this to morecomplex analyses. The prototype has enabled the exploration of different approachesto usability and is a useful first step in a larger project aimed at building a user-friendlysound static analysis framework.
Static analysis allows software developers to detect and fix many types of errors in codebefore it is submitted to a production environment. Despite the availability of sophisticatedanalysis techniques, many preventable bugs still cause security vulnerabilitiesthat allow hackers to steal private information. Studies have shown that even thoughdevelopers recognize the benefits of static analysis there are many practical usabilityproblems preventing higher adoption rates.The challenge is even greater with sound analyzers that could potentially verify thetotal absence of specific types of bugs, but at the cost of rejecting some correct programs.This thesis investigates the current situation of adopting static analyzers in the industryand proposes an approach of integrating an analysis into the IDE and build system. Theseamless integration of both interactive and automated analysis may enable developersto adopt sound analysis tools.A prototype implementation of that static analysis workflow for tainting analysisin IntelliJ and Gradle is presented. The integration proposed works well for taintinganalysis used in the prototype, but many challenges remain to generalize this to morecomplex analyses. The prototype has enabled the exploration of different approachesto usability and is a useful first step in a larger project aimed at building a user-friendlysound static analysis framework.