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 & ISoLA'20). What is missing now is an experiment at scale!
This is a flexible project where the exact task can be fit to your profile — lots of possibilities!
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?
- refactorings for other interesting languages like Go, Rust, ...
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:
- Volker Stolz, Violet Ka I Pun, Rohit Gheyi: Refactoring for Actor Languages. LNCS Vol. 12477, Springer, 2020.
- Master thesis Ringdal: Automated Refactoring of Rust Programs (UiO, 2020)
- Anna Maria Eilertsen, Volker Stolz, Anya Helene Bagge: Safer Refactorings. LNCS Vol. 9952, Springer, 2016. ([PDF] Master thesis)
- Erlend Kristiansen, Volker Stolz: Search-based composed refactorings. NIK 2014 ([PDF] Master thesis)
Contact:
Volker Stolz