skip to main content
10.1145/1251535.1251542acmconferencesArticle/Chapter ViewAbstractPublication PagespasteConference Proceedingsconference-collections
Article

Comparing call graphs

Published: 13 June 2007 Publication History

Abstract

Comparing program analysis results from different static and dynamic analysis tools is difficult and therefore too rare, especially when it comes to qualitative comparison. Analysis results can be strongly affected by specific details of programs being analyzed, so quantitative evaluation should be supplemented by qualitative identification of those details. Our general aim is to develop tools to reduce the difficulty of qualitative comparison. In this paper, we focus on comparison of call graphs in particular. We present two complementary tools for comparing call graphs. Our main contribution is a call graph difference search tool that ranks call graph edges by their likelihood of causing large differences in the call graphs. This is complemented by a simple interactive call graph viewer that highlights specific differences between call graphs, and allows a user to browse through them. In a search for the causes of call graph differences, a user first uses the search tool to identify which of the thousands of spurious edges to look at more closely, and then uses the interactive viewer to determine in detail the root cause of a difference. We present the ranking algorithm used in the difference search tool. We also report on a case study using the comparison tools to determine the most important sources of imprecision in a typical static call graph by comparing it to a dynamic call graph of the same benchmark.

References

[1]
Graphviz - graph visualization software. http://www.graphviz.org/.
[2]
*J: A tool for dynamic analysis of java programs.http://www.sable.mcgill.ca/starj/.
[3]
Soot: a Java optimization framework. http://www.sable.mcgill.ca/soot/.
[4]
yEd - Java graph editor. http://www.yworks.com/en/products yed about.htm.
[5]
B. Dufour. Objective quantification of program behaviour using dynamic metrics. Master's thesis, McGill University, June 2004.
[6]
B. Dufour, K. Driesen, L. Hendren, and C. Verbrugge. Dynamic metrics for Java. In Proceedings of the 18th Annual ACM SIGPLAN Conference on Object-Oriented Programing, Systems, Languages, and Applications, pages 149--168. ACM Press, 2003.
[7]
B. Dufour, L. Hendren, and C. Verbrugge. *J: a tool for dynamic analysis of Java programs. In OOPSLA '03: Companion of the 18th Annual ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages, and Applications, pages 306--307, New York, NY, USA, 2003. ACM Press.
[8]
M. D. Ernst. Static and dynamic analysis: synergy and duality. In Proceedings of the ACM-SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering, pages 35--35. ACM Press, 2004.
[9]
D. Grove and C. Chambers. A framework for call graph construction algorithms. ACM Transactions on Programming Languages and Systems, 23(6):685--746, Nov. 2001.
[10]
M. Hind. Pointer analysis: haven't we solved this problem yet? In Proceedings of the 2001 ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering, pages 54--61. ACM Press, 2001.
[11]
M. Hind and A. Pioli. Which pointer analysis should I use? In Proceedings of the 2000 ACM SIGSOFT International Symposium on Software Testing and Analysis, pages 113--123. ACM Press, 2000.
[12]
O. Lhoták. Spark: A flexible points-to analysis framework for Java. Master's thesis, McGill University, Dec. 2002.
[13]
O. Lhoták. Program Analysis using Binary Decision Diagrams. PhD thesis, McGill University, Jan. 2006.
[14]
O. Lhoták and L. Hendren. Scaling Java points-to analysis using Spark. In G. Hedin, editor, Compiler Construction, 12th International Conference, volume 2622 of LNCS, pages 153--169, Warsaw, Poland, Apr. 2003. Springer.
[15]
O. Lhoták and L. Hendren. Context-sensitive points-to analysis: is it worth it? In A.Mycroft and A. Zeller, editors, Compiler Construction, 15th International Conference, volume 3923 of LNCS, pages 47--64, Vienna, Mar. 2006. Springer.
[16]
D. Liang, M. Pennings, and M. J. Harrold. Evaluating the impact of context-sensitivity on Andersen's algorithm for Java programs. In PASTE '05: The 6th ACMSIGPLAN-SIGSOFTWorkshop on Program Analysis for Software Tools and Engineering, pages 6--12, New York, NY, USA, 2005. ACM Press.
[17]
A. Milanova. Precise and Practical Flow Analysis of Object-Oriented Software. PhD thesis, Rutgers University, Aug. 2003.
[18]
A. Milanova, A. Rountev, and B. G. Ryder. Parameterized object sensitivity for points-to and side-effect analyses for Java. In Proceedings of the 2002 ACM SIGSOFT International Symposium on Software Testing and Analysis, pages 1--11. ACM Press, 2002.
[19]
A. Milanova, A. Rountev, and B. G. Ryder. Parameterized object sensitivity for points-to analysis for Java. ACM Trans. Softw. Eng. Methodol., 14(1):1--41, 2005.
[20]
M. Mock, M. Das, C. Chambers, and S. J. Eggers. Dynamic points-to sets: a comparison with static analyses and potential applications in program understanding and optimization. In Proceedings of the 2001 ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering, pages 66--72. ACM Press, 2001.
[21]
G. C. Murphy, D. Notkin, and E. S.-C. Lan. An empirical study of static call graph extractors. In ICSE '96: Proceedings of the 18th International Conference on Software Engineering, pages 90--99, Washington, DC, USA, 1996. IEEE Computer Society.
[22]
A. Rountev, S. Kagan, and M. Gibas. Evaluating the imprecision of static analysis. In Proceedings of the ACM-SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering, pages 14--16. ACM Press, 2004.
[23]
A. Rountev, S. Kagan, and M. Gibas. Static and dynamic analysis of call chains in Java. In Proceedings of the 2004 ACM SIGSOFT International Symposium on Software Testing and Analysis, pages 1--11. ACM Press, 2004.
[24]
B. G. Ryder. Dimensions of precision in reference analysis of objectoriented programming languages. In G. Hedin, editor, Compiler Construction, 12th International Conference, CC 2003, volume 2622 of Lecture Notes in Computer Science, pages 126--137. Springer, 2003.
[25]
M. Sridharan and R. Bodík. Refinement-based context-sensitive points-to analysis for Java. In PLDI '06: Proceedings of the 2006 ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 387--400, New York, NY, USA, 2006. ACM Press.
[26]
Standard Performance Evaluation Corporation. SPEC JVM98 benchmarks. http://www.spec.org/osg/jvm98/.
[27]
P. A. Stocks, B. G. Ryder,W. A. Landi, and S. Zhang. Comparing flow and context sensitivity on the modification-side-effects problem. In Proceedings of ACM SIGSOFT International Symposium on Software Testing and Analysis, pages 21--31. ACM Press, 1998.
[28]
F. Tip and J. Palsberg. Scalable propagation-based call graph construction algorithms. In Proceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications, pages 281--293. ACM Press, 2000.
[29]
J. Whaley and M. S. Lam. Cloning-based context-sensitive pointer alias analysis using binary decision diagrams. In Proceedings of the ACM SIGPLAN 2004 Conference on Programming Language Design and Implementation, pages 131--144. ACM Press, 2004.
[30]
J. Zhu and S. Calman. Symbolic pointer analysis revisited. In Proceedings of the ACM SIGPLAN 2004 Conference on Programming Language Design and Implementation, pages 145--157. ACM Press, 2004.

Cited By

View all
  • (2024)Total Recall? How Good Are Static Call Graphs Really?Proceedings of the 33rd ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3650212.3652114(112-123)Online publication date: 11-Sep-2024
  • (2024)On the Effectiveness of Machine Learning-based Call Graph Pruning: An Empirical StudyProceedings of the 21st International Conference on Mining Software Repositories10.1145/3643991.3644897(457-468)Online publication date: 15-Apr-2024
  • (2024)Understanding the Impact of APIs Behavioral Breaking Changes on Client ApplicationsProceedings of the ACM on Software Engineering10.1145/36437821:FSE(1238-1261)Online publication date: 12-Jul-2024
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
PASTE '07: Proceedings of the 7th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
June 2007
96 pages
ISBN:9781595935953
DOI:10.1145/1251535
  • General Chairs:
  • Manuvir Das,
  • Dan Grossman
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 13 June 2007

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. call graph
  2. comparison tools
  3. dynamic analysis
  4. interpreting analysis results
  5. static analysis

Qualifiers

  • Article

Conference

PASTE07

Acceptance Rates

Overall Acceptance Rate 57 of 159 submissions, 36%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)43
  • Downloads (Last 6 weeks)3
Reflects downloads up to 30 Jan 2025

Other Metrics

Citations

Cited By

View all
  • (2024)Total Recall? How Good Are Static Call Graphs Really?Proceedings of the 33rd ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3650212.3652114(112-123)Online publication date: 11-Sep-2024
  • (2024)On the Effectiveness of Machine Learning-based Call Graph Pruning: An Empirical StudyProceedings of the 21st International Conference on Mining Software Repositories10.1145/3643991.3644897(457-468)Online publication date: 15-Apr-2024
  • (2024)Understanding the Impact of APIs Behavioral Breaking Changes on Client ApplicationsProceedings of the ACM on Software Engineering10.1145/36437821:FSE(1238-1261)Online publication date: 12-Jul-2024
  • (2023)Variational Study of the Impact of Call Graphs on Precision of Android Taint AnalysisProceedings of the 16th Innovations in Software Engineering Conference10.1145/3578527.3578545(1-5)Online publication date: 23-Feb-2023
  • (2023)Is JavaScript Call Graph Extraction Solved Yet? A Comparative Study of Static and Dynamic ToolsIEEE Access10.1109/ACCESS.2023.325598411(25266-25284)Online publication date: 2023
  • (2022)Striking a balanceProceedings of the 44th International Conference on Software Engineering10.1145/3510003.3510166(2043-2055)Online publication date: 21-May-2022
  • (2022)Static Call Graph Combination to Simulate Dynamic Call Graph BehaviorIEEE Access10.1109/ACCESS.2022.322918210(131829-131840)Online publication date: 2022
  • (2021)A Study of Call Graph Construction for JVM-Hosted LanguagesIEEE Transactions on Software Engineering10.1109/TSE.2019.295692547:12(2644-2666)Online publication date: 1-Dec-2021
  • (2021)Qualitative and Quantitative Analysis of Callgraph Algorithms for Python2021 International Conference on Code Quality (ICCQ)10.1109/ICCQ51190.2021.9392986(1-15)Online publication date: 27-Mar-2021
  • (2020)Enhanced Bug Prediction in JavaScript Programs with Hybrid Call-Graph Based Invocation MetricsTechnologies10.3390/technologies90100039:1(3)Online publication date: 30-Dec-2020
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media