Refactoring, which improves the structure of source code without changing its external behaviors, has been widely applied by developers in practice to improve the maintainability of software systems.
Refactoring detection is the first step for understanding how refactoring is applied in practice. Besides, detected refactoring operations can be used to train models for automatic refactoring. Currently, most refactoring tools focus on Java or object-oriented refactoring operations (e.g., pull up/push down methods). There is not much attention given to other types of refactorings. In this topic, we would like to explore the opportunities of detecting refactorings for other programming paradigms or languages.
Refactoring comes at a cost. Sometimes, when developers apply refactoring, they might unintentionally break other parts of code. In this topic, we would like to analyze the impact of different types of refactoring on software (e.g., how refactoring might impact the javadoc comments). Once the issues are identified, we would like to explore the possibility of automatically fixing them.
Currently, most refactoring operations are designed for source code. In reality, refactoring can be applied to many other software artifacts, such as configuration files and design documents. We would like to identify the common issues in these artifacts and propose approaches to automatically refactor them.
If you are interested in any of the topics above, please contact Bin Lin. Other topics related to software engineering practices and software maintenance are also welcome. For more information, please refer to https://binlin.info/.