In a nutshell

The task is to design, develop and implement an effenct program analysis for Go, with the purpose increased efficiency and scalability, using Go’s concurrency features.

Background & motivation

Go is a relatively new general-purpose language, which gained traction recently, being backed by Google and being used to implement applications such as Docker and dropbox. Recently a taint analysis as a special form of flow analysis has been implemented (see the “Information Flow Analysis for Go” by E. Bodden and K. I Pun, M. Steffen, V. Stolz, and A.-K. Wickert). Data flow analysis, including taint analysis is a standard way of inferring relevant properties about programs. As usual, such static analyses have to make compromises between efficiency and scalability on the one hand and precision on the other. This thesis will explore approaches to improve the efficiency of data flow analysis resp. taint analysis for Go, in particular.

Problem setting

To achieve the above goals, the thesis plans to address the following point.

  • review the current approaches for paralellizing flow analyses and approaches for scalability.
  • design a corresponding analysis and implement it.
  • exploit the possibility of method summaries for “caching” intermediate analysis results.
  • run experiments on hand-made examples, resp. existing open-source software projects, gaining empirical results
  • contribute to publications/conference submissions.

The work is done in connection with the GoRETech-project.