Retaining Semantic Information in the Static Analysis of Real-World Software
Static analysis is the analysis of a program through inspection of the source code, usually carried out by an automated tool. One of the greatest challenges posed by real-world applications is that the whole program is rarely available at any point of the analysis process. One possible reason for this is separate compilation, where the source code of some libraries might not be accessible in order to protect intellectual property. But even if we have a complete view of the source code including the underlying operating system, we might still have trouble fitting the representation of the entire software into memory. Thus, industrial tools need to deal with uncertainty due to the lack of information.
In my dissertation I discuss and compare the state-of-the-art methods to deal with this uncertainty and to retain information that would otherwise be unavailable. I also suggest improvements for specific use cases, and propose guidelines on which methods to choose to solve certain problems.