Today’s IDEs typically integrate static analysis tools to facilitate the development process, highlighting useful program information, such as potential sources of bugs, without actually running the program. However, in order to be appreciated, they should provide both sufficient precision and performance.
Balance between these two characteristics is fragile, with one usually influencing the other in unpredictable ways. Precision usually translates to context-sensitivity in the analysis. However, there is no single optimal choice for context-sensitivity that works well for all programs, throughout the entire analysis. In addition, extra challenges arise from the fact that today’s programs employ and mix multiple paradigms, which impact the choice of an optimal precision strategy for certain classes of programs (e.g. event-driven applications).
Since no fixed precision strategy seems adequate, we propose the usage of adaptive precision techniques. That is, precision, context-sensitivity, and the behaviour of the analysis in general, should be modified and tuned during the analysis itself. This way, an analysis can more optimally adapt to the program at hand, and even vary and specialise its behaviour during the analysis.
We envision a principled and elegant strategy to achieve this goal, designing a meta-protocol to allow an analysis to reflect on its own behaviour and adapt accordingly. Doing so would increase flexibility and understanding of existing analysis techniques.