In a modern age where software has become an integral part of business workflow and even our daily lives it comes as no surprise that there is an ever growing number of repositories on code hosting sites such as github.com. However, it is not only the number of repositories but also the size of the projects themselves that grow. While such growth is more than welcome from the viewpoint of the users, it poses additional challenges for the development team to maintain such a tremendous code base.
There are multiple ways one can go about alleviating these new difficulties such as a more disciplined development workflow or rigorous testing. One other technology that has been gaining in popularity lately is code analysis. Rather than testing that treats the testee as a black-box and tries to verify its functionality by observing its behavior to certain inputs, code analysis can treat the testee as a white box and thus have far more insight into its inner structure. On the one hand, verifying functionality through code analysis is far more difficult, on the other hand, the additional informational available allows it to reveal unfavorable code patterns or discouraged practices that may pose risks to the longevity of the project.
Most compilers and IDEs will support some level of code analysis based feedback in the form of compiler warnings furthermore there exist tools such as SonarQube  that supports code quality management even on the level of entire repositories. Understanding the importance of these technologies, Microsoft has released the .Net Compiler Platform (from now on Roslyn)  which exposes a set of powerful APIs that can help anyone trying to create a code analysis tool for the .Net platform.
The goal of my thesis is to familiarize myself with Microsoft’s new technology by creating my own analyzers and then finally focus on the age old problem of the development world that is code duplication.