Code Analysis and Manipulation People (CAMP) groups together those involved with the theory and practice of source code analysis and manipulation. Our research advances the state of the art along three main axes:
  • The first axis considers multi-language systems. Analyses need to consider the impact that annotations as well as embedded domain-specific languages have on the semantics of the host program.
  • The second axis considers the analysis of highly dynamic languages such as Javascript and Scheme. Here, the semantics of higher-order procedures with side-effects have to be taken into account.
  • The third axis considers multiple versions of code in an analysis. Here, the state of the art is challenged by the scale of version repositories and the complexity of the temporal relations between versions.
Along these axes, our analyses provide a solid foundation for the validation, transformation and understanding of software systems:
  • We support validation by identifying bug patterns and violations of architectural regularities in code.
  • We apply software transformations to the problems of API-migration, automatic parallelization and multi-language refactoring.
  • Finally, we provide support for the understanding of version repositories through advanced visualizations and dedicated query languages.