Refactoring at scale
Refactoring is an important activity of software developers. It improves code quality and understandability, but can also subtly change the behaviour of your existing program. We have so far tried in two very successful Master theses to make a small number of refactorings for Java automatic (website, published in NIK'14), and safer (slides, published in ISoLA'16). What is missing now is an experiment at scale!
Research questions include:
- can we automate more refactorings (beyond Extract-and-Move-Method)?
- can we do so at scale (incremental or concurrent processing of large code bases)?
- can we integrate automated refactorings into code review systems like Gerrit?
A prospective student should...
- ...like programming and programming languages;
- ...be willing to learn about grammars, programming language semantics, and types/static analysis;
- ...have an interest in software quality metrics (coupling, cyclomatic complexity,...);
- ...independently set up and run experiments (e.g. check out open source-projects from GitHub, apply automated refactoring, collect results e.g. in Jenkins/Sonar/...).
Publications so far:
- Erlend Kristiansen, Volker Stolz: Search-based composed refactorings. NIK 2014 ([PDF] Master thesis)
- Anna Maria Eilertsen, Volker Stolz, Anya Helene Bagge: Safer Refactorings. LNCS Vol. 9952, Springer, 2016. ([PDF] Master thesis)