Abstract

Static analysis frameworks, such as Soot and Wala, are used by researchers to prototype and compare program analyses. These frameworks vary on heap abstraction, modeling library classes, and underlying intermediate program representation (IR). Often, these variations pose a threat to the validity of the results as the implications of comparing the same analysis implementation in different frameworks are still unexplored. Earlier studies have focused on the precision, soundness, and recall of the algorithms implemented in these frameworks; however, little to no work has been done to evaluate the effects of program representation. In this work, we fill this gap and study the impact of program representation on pointer analysis. Unfortunately, existing metrics are insufficient for such a comparison due to their inability to isolate each aspect of the program representation. Therefore, we define two novel metrics that measure these analyses’ precision after isolating the influence of class-hierarchy and intermediate representation. Our results establish that the minor differences in the class hierarchy and IR do not impact program analysis significantly. Besides, they reveal the sources of unsoundness that aid researchers in developing program analysis.

Highlights

  • Researchers have proposed various approaches to enhance the precision and soundness of static analyses [6, 9, 10, 14, 17, 26, 30, 31]

  • – We evaluated the precision for different Intermediate Representation (IR) and found that they have no impact on the precision of virtual method call elimination

  • This paper reports the effects of program representation on program analysis

Read more

Summary

Introduction

Researchers have proposed various approaches to enhance the precision and soundness of static analyses [6, 9, 10, 14, 17, 26, 30, 31]. They use program analysis frameworks to prototype and evaluate their algorithms. Primarily Soot and Wala, are being increasingly adopted in program analysis [11, 31, 40]. These frameworks provide APIs, which abstract internal program representation. The goal of pointer analysis is to determine which objects a variable may refer (point) to at runtime. If V is the set of variables in a program, and H is the set of heap objects, points-to : V → P(H). Doop leverages the program synthesizer Soufflé [12, 22] to resolve points-to according to the inference rules and the ground facts, which are derived directly from the program

Objectives
Methods
Results
Conclusion
Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call