A Survey on Machine Learning Techniques for Source Code Analysis