Constructing call graphs of Scala programs

dc.contributor.authorAli, Karim
dc.contributor.authorRapoport, Marianna
dc.contributor.authorLhotak, Ondrej
dc.contributor.authorDolby, Julian
dc.contributor.authorTip, Frank
dc.date.accessioned2026-08-25T16:23:04Z
dc.date.issued2014-05-14
dc.description.abstractAs Scala gains popularity, there is growing interest in programming tools for it. Such tools often require call graphs. However, call graph construction algorithms in the literature do not handle Scala features, such as traits and abstract type members. Applying existing call graph construction algorithms to the JVM bytecodes generated by the Scala compiler produces very imprecise results due to type information being lost during compilation. We adapt existing call graph construction algorithms, Name-Based Resolution (RA) and Rapid Type Analysis (RTA), for Scala, and present a formalization based on Featherweight Scala. We evaluate our algorithms on a collection of Scala programs. Our results show that careful handling of complex Scala constructs greatly helps precision and that our most precise analysis generates call graphs with 1.1-3.7 times fewer nodes and .5-18.7 times fewer edges than a bytecode-based RTA analysis.
dc.identifier.urihttps://hdl.handle.net/10012/24037
dc.language.isoen
dc.publisherUnviersity of Waterloo
dc.relation.ispartofseriesComputer Science Technical Reports; CS-2014-09
dc.titleConstructing call graphs of Scala programs
dc.typeTechnical Report
uws.contributor.affiliation1Faculty of Mathematics
uws.contributor.affiliation2David R. Cheriton School of Computer Science
uws.peerReviewStatusUnreviewed
uws.scholarLevelFaculty
uws.typeOfResourceTexten

Files

Original bundle

Now showing 1 - 1 of 1
Loading...
Thumbnail Image
Name:
cs-2014-09.pdf
Size:
583.31 KB
Format:
Adobe Portable Document Format

License bundle

Now showing 1 - 1 of 1
Loading...
Thumbnail Image
Name:
license.txt
Size:
4.47 KB
Format:
Item-specific license agreed upon to submission
Description: