We present a method for selectively applying context-sensitivity during interprocedural program analysis. Our method applies context-sensitivity only when and where doing so is likely to improve the precision that matters for resolving given queries. The idea is to use a pre-analysis to estimate the impact of contextsensitivity on the main analysis's precision, and to use this information to find out when and where the main analysis should turn on or off its context-sensitivity. We formalize this approach and prove that the analysis always benefits from the pre-analysisguided context-sensitivity. We implemented this selective method for an existing industrial-strength interval analyzer for full C. The method reduced the number of (false) alarms by 24.4%, while increasing the analysis cost by 27.8% on average.
The use of the selective method is not limited to contextsensitivity. We demonstrate this generality by following the same principle and developing a selective relational analysis. Categories and Subject Descriptors F.3.2 [Semantics of Programming Languages]: Program Analysis
- Context-sensitive analysis
- Static analysis
ASJC Scopus subject areas
- Computer Science(all)