A Survey on Machine Learning Techniques for Source Code Analysis
  Context: The advancements in machine learning techniques have encouraged
researchers to apply these techniques to a myriad of software engineering tasks
that use source code analysis such as testing and vulnerabilities detection. A
large number of studies poses challenges to the community to understand the
current landscape. Objective: We aim to summarize the current knowledge in the
area of applied machine learning for source code analysis. Method: We
investigate studies belonging to twelve categories of software engineering
tasks and corresponding machine learning techniques, tools, and datasets that
have been applied to solve them. To do so, we carried out an extensive
literature search and identified 364 primary studies published between 2002 and
2021. We summarize our observations and findings with the help of the
identified studies. Results: Our findings suggest that the usage of machine
learning techniques for source code analysis tasks is consistently increasing.
We synthesize commonly used steps and the overall workflow for each task, and
summarize the employed machine learning techniques. Additionally, we collate a
comprehensive list of available datasets and tools useable in this context.
Finally, we summarize the perceived challenges in this area that include
availability of standard datasets, reproducibility and replicability, and
hardware resources.
