Validation of Static Program Analysis Tools by Self-Application: A Case Study.
Miloš Savić, Mirjana Drenovak Ivanović · 2015
Static program analysis tools process source code of computer programs in order to extract information that can help software engineers in a variety of tasks ranging from program understanding to fault detection [Binkley 2007]. The automated extraction of information in static program analysis is done without executing program and relies only on source code or some intermediate representation. Software validation refers to the process of evaluation of a software system in order to check whether it works properly and according to its specification. The validation of static program analysis tools is an extremely important task since those tools are used to understand and improve software systems. On the other hand, real-world software systems are usually extremely large and hard to comprehend making the validation hard and time consuming. The identification of dependencies between source code entities (functions, classes, modules, etc.) is one of fundamental problems in static program analysis. We use the generic term “software network” to denote directed graphs of dependencies between source code entities. The importance of software networks extraction spans multiple fields such as empirical analysis of complexity of software systems, their reverse engineering and computation of software design metrics [Savic et al. 2014]. In our previous works [Savic et al. 2012b; 2014] we introduced SNEIPL – a language-independent approach