arrow
Return

Type-Based Call Graph Construction Algorithms for Scala

delete2015-12-02
delete7
PRE
AI
K
Karim Ali *
M
Marianna Rapoport
O
Ondřej Lhoták
J
Julian Dolby
F
Frank Tip
DOI:10.1145/2824234delete
deleteOriginal
deleteOriginal request for help
deleteShare
deleteSave
Abstract

Abstract

En 中文
Call graphs have many applications in software engineering. For example, they serve as the basis for code navigation features in integrated development environments and are at the foundation of static analyses performed in verification tools. While many call graph construction algorithms have been presented in the literature, we are not aware of any that handle Scala features such as traits and abstract type members. Applying existing algorithms to the JVM bytecodes generated by the Scala compiler produces very imprecise results because type information is lost during compilation. We adapt existing type-based call graph construction algorithms to Scala and present a formalization based on Featherweight Scala. An experimental evaluation shows that our most precise algorithm generates call graphs with 1.1-3.7 times fewer nodes and 1.5-17.3 times fewer edges than a bytecode-based RTA analysis.
Keywords:
Call graphs
static analysis
Scala
AI Summary

AI Summary

Key information extracted from the uploaded paper, including a brief overview, abstract, background, key highlights, visual analysis, and future outlook.

Journal

A
ACM Transactions on Software Engineering and Methodology
IF:
6.2
Papers:
1.2K
Citations:
3.4K

Organization

S
samsung
Scholars:
8.6K
Papers: 6.4K
Citations: 8
U
University of Waterloo
Scholars:
2.2W
Papers: 2.3W
Citations: 3.3W
T
Technical University of Darmstadt
Scholars:
1.3W
Papers: 10.0K
Citations: 1.2W
researcher View more organizations