Static Analysis of Complex Software Systems Implemented in Erlang

  • Melinda Tóth
  • István Bozó
Part of the Lecture Notes in Computer Science book series (LNCS, volume 7241)


Static software analyser tools use different levels of intermediate source code representations that depend on the syntax and semantics of the language to be analysed. Most of the analyser tools use graph representation to efficiently retrieve information. Building such graphs for dynamically typed languages, such as Erlang, is not straightforward. In this paper we present static analysis methods to define the Dependency Graph representation of Erlang programs. The introduced methods cover the data-, control-, behaviour-flow and dependency analyses for sequential and parallel language constructs.


Source Code Dependency Graph Message Passing Function Call Syntax Tree 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    The DIALYZER: a DIscrepancy AnaLYZer for ERlang programs,
  2. 2.
    RefactorErl Home Page (2011),
  3. 3.
    Bozó, I., Horpácsi, D., Horváth, Z., Kitlei, R., Kőszegi, J., Tejfel, M., Tóth, M.: Refactorerl – source code analysis and refactoring in erlang. In: Proceeding of the 12th Symposium on Programming Languages and Software Tools, Tallin, Estonia (2011)Google Scholar
  4. 4.
    Bozó, I., Tóth, M.: Selecting erlang test cases using impact analysis. In: Proceedings of Symposium on Computer Languages, Implementations and Tools, Kassandra, Halkidiki, Greece (2011)Google Scholar
  5. 5.
    Carlsson, R.: An introduction to core erlang. In: Proceedings of the PLI 2001 Erlang Workshop (2001)Google Scholar
  6. 6.
    Ericsson, A.B.: EDOC – Erlang program documentation generator. Latest version,
  7. 7.
    Ericsson, A.B.: Erlang Reference Manual,
  8. 8.
    Horpácsi, D., Kőszegi, J.: Static analysis of function calls in erlang – refining the static function call graph with dynamic call information by using data-flow analysis. In: Proceedings of the Central and Eastern European Conference on Software Engineering Techniques, Debrecen, Hungary (August 2011)Google Scholar
  9. 9.
    Horwitz, S., Reps, T., Binkley, D.: Interprocedural slicing using dependence graphs. In: PhD thesis, University of Michigan, Ann Arbor, MI (1979)Google Scholar
  10. 10.
    Li, H., Thompson, S.: Tool support for refactoring functional programs. In: WRT 2008: Proceedings of the 2nd Workshop on Refactoring Tools, pp. 1–4. ACM, New York (2008)Google Scholar
  11. 11.
    Lövei, L., Hajós, L., Tóth, M.: Erlang Semantic Query Language. In: Proceedings of the 8th International Conference on Applied Informatics, ICAI 2010 (January 2010)Google Scholar
  12. 12.
    Michael Ashley, J., Kent Dybvig, R.: A practical and flexible flow analysis for higher-order languages. ACM Transactions on Programming Languages and Systems 20(4), 845–868 (1998)CrossRefGoogle Scholar
  13. 13.
    Muchnick, S.S.: Advanced Compiler Design and Implementation. Morgan Kaufmann Publishers, Inc. (1997)Google Scholar
  14. 14.
    Nielson, F., Nielson, H.R., Hankin, C.: Principles of Program Analysis. Springer (1999) (corrected 2005)Google Scholar
  15. 15.
    Shivers, O.: Control-Flow Analysis of Higher-Order Languages. PhD thesis, Carnegie Mellon University (1991)Google Scholar
  16. 16.
    Stafford, J.: A formal, language-independent, and compositional approach to control dependence analysis. PhD thesis, University of Colorado, Boulder, Colorado, USA (2000)Google Scholar
  17. 17.
    Tóth, M., Bozó, I., Horváth, Z., Erdődi, A.: Static analysis and refactoring towards erlang multicore programming. In: Pre-proceedings of the Fourth Workshop on Programming Language Approaches to Concurrency and Communication-cEntric Software, PLACES 2011, Saarbrcken, Germany (2011)Google Scholar
  18. 18.
    Tóth, M., Bozó, I., Horváth, Z., Lövei, L., Tejfel, M., Kozsik, T.: Impact Analysis of Erlang Programs Using Behaviour Dependency Graphs. In: Horváth, Z., Plasmeijer, R., Zsók, V. (eds.) CEFP 2009. LNCS, vol. 6299, pp. 372–390. Springer, Heidelberg (2010)CrossRefGoogle Scholar
  19. 19.
    Tóth, M., Bozó, I., Horváth, Z., Tejfel, M.: First order flow analysis for Erlang. In: 8th Joint Conference on Mathematics and Computer Science, MACS 2010 (2010)Google Scholar
  20. 20.
    Tóth, M., Bozó, I., Kőszegi, J., Horváth, Z.: Applying the Query Language to support program comprehension. Acta Electrotechnica et Informatica 11(03), 3–10 (2011) ISSN 1335-8243 (print), ISSN 1338-3957 (online)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2012

Authors and Affiliations

  • Melinda Tóth
    • 1
  • István Bozó
    • 1
  1. 1.Eötvös Loránd UniversityBudapestHungary

Personalised recommendations