SWAN: A static analysis framework for swift
Daniil Tiganov, Jeff Cho, et al.
ESEC/FSE 2020
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.
Daniil Tiganov, Jeff Cho, et al.
ESEC/FSE 2020
Marianna Rapoport, Philippe Suter, et al.
MSR 2017
Karim Ali, Xiaoni Lai, et al.
IEEE TSE
Marianna Rapoport, Philippe Suter, et al.
MSR 2017