PL EN


Preferencje help
Widoczny [Schowaj] Abstrakt
Liczba wyników
Tytuł artykułu

Static analysis of function calls in Erlang. Refining the static function call graph with dynamic call information by using data-flow analysis

Treść / Zawartość
Identyfikatory
Warianty tytułu
Języki publikacji
EN
Abstrakty
EN
Functions and their relations can affect numerous properties and metrics of a functional program. To identify and represent the functions and their calling connections, software analysers commonly apply semantic function analysis, which derives the static call graph of the program, based on its source code. Function calls however may be dynamic and complex, making it difficult to statically identify the callee. Dynamic calls are determined just at run-time, static analysis therefore cannot be expected to fully identify every call. Nevertheless, by utilising the results of a properly performed data-flow analysis as well as taking ambiguous references into account, numerous dynamic calls are discoverable and representable. We consider cases where the identifiers of the callee are statically determined, but they flow into the call expression from a different program point, and also, we manage to handle function calls whose identifiers are not fully identifiable at compile-time. By utilizing the improved reference analysis, we extend the static call graph with various information about dynamic function calls. We investigate such a function call analysis in the programming language Erlang.
Rocznik
Strony
65--76
Opis fizyczny
Bibliogr. 15 poz.
Twórcy
autor
  • Department of Programming Languages and Compilers, Eötvös Loránd University, Budapest, Hungary
autor
  • Department of Programming Languages and Compilers, Eötvös Loránd University, Budapest, Hungary
Bibliografia
  • [1] M. Fowler, K. Beck, J. Brant, W. Opdyke, and D. Roberts, Refactoring: Improving the Design of Existing Code. Addison-Wesley Professional, July 1999.
  • [2] “RefactorErl Home Page,” 2011, http://plc.inf.elte.hu/erlang.
  • [3] F. Cesarini and S. Thompson, ERLANG Programming, 1st ed. O’Reilly Media, Inc., 2009.
  • [4] “Open Source Erlang,” 2011, http://www.erlang.org.
  • [5] B. G. Ryder, “Constructing the Call Graph of a Program,” IEEE Trans. Softw. Eng., Vol. 5, No. 3, 1979, pp. 216–226.
  • [6] Z. Horváth et al., “Modeling semantic knowledge in Erlang for refactoring,” in International Conference on Knowledge Engineering, Principles and Techniques, KEPT 2009, Selected papers, ser. Studia Universitatis Babes-Bolyai, Series Informatica, Vol. 54(2009) Sp. Issue, Cluj-Napoca, Romania, Jul 2009, pp. 7–16.
  • [7] M. Tóth, I. Bozó, Z. Horváth, and M. Tejfel, “1st order flow analysis for Erlang,” in 8th Joint Conference on Mathematics and Computer Science, MACS 2010, 2010.
  • [8] T. Lindahl and K. Sagonas, “Typer: a type annotator of erlang code,” in Proceedings of the 2005 ACM SIGPLAN workshop on Erlang, ser. ERLANG ’05. New York, NY, USA: ACM, 2005, pp. 17–25. [Online]. http://doi.acm.org/10.1145/1088361.1088366
  • [9] S.-O. Nyström, “A soft-typing system for Erlang,” in Proceedings of the 2003 ACM SIGPLAN workshop on Erlang, ser. ERLANG ’03. New York, NY, USA: ACM, 2003, pp. 56–71. [Online]. http://doi.acm.org/10.1145/940880.940888
  • [10] S. Marlow and P. Wadler, “A practical subtyping system for Erlang,” SIGPLAN Not., Vol. 32, August 1997, pp. 136–149. [Online]. http://doi.acm.org/10.1145/258949.258962
  • [11] S. H. Jensen, A. Møller, and P. Thiemann, “Type Analysis for JavaScript,” in Proc. 16th International Static Analysis Symposium, SAS ’09, ser. LNCS, Vol. 5673. Springer-Verlag, August 2009.
  • [12] O. Shivers, “Control-Flow Analysis in Scheme,” in PLDI, 1988, pp. 164–174.
  • [13] B. Steensgaard, “Points-to analysis in almost linear time,” in Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages, ser. POPL ’96. New York, NY, USA: ACM, 1996, pp. 32–41. [Online]. http://doi.acm.org/10.1145/237721.237727
  • [14] E. Horváth, I. Forgács, Ákos Kiss, J. Jász, and T. Gyimóthy, “General flow-sensitive pointer analysis and call graph,” in Proceedings of the Estonian Academy of Sciences, Engineering, Vol. 11, December 2005, pp. 286–295.
  • [15] A. Milanova, A. Rountev, and B. G. Ryder, “Precise call graph construction in the presence of function pointers,” In Proceedings of the Second IEEE International Workshop on Source Code Analysis and Manipulation, Tech. Rep., 2001.
Typ dokumentu
Bibliografia
Identyfikator YADDA
bwmeta1.element.baztech-42380c42-c6f8-48b5-b9bb-5641d311afe8
JavaScript jest wyłączony w Twojej przeglądarce internetowej. Włącz go, a następnie odśwież stronę, aby móc w pełni z niej korzystać.