ActRef: Enhancing the Understanding of Python Code Refactoring with Action-Based Analysis
Siqi Wang, Xing Hu, Xin Xia, Xinyu Wang
TL;DR
ActRef tackles the challenge of identifying Python refactorings in dynamic code by shifting from statement matching to action-based analysis. It introduces a multi-level action framework (AST-level and module-level) built on GumTree, enabling fine-grained intra-file and cross-file refactoring mining. Evaluated on 1,914 manually validated instances from 136 open-source projects, ActRef outperforms PyRef, PyRef+MLRefScanner, and large language model baselines in precision, recall, and F1, while maintaining competitive runtime. The results demonstrate ActRef's scalability and its potential to provide deeper, developer-aligned insights into Python code evolution.
Abstract
Refactoring, the process of improving the code structure of a software system without altering its behavior, is crucial for managing code evolution in software development. Identifying refactoring actions in source code is essential for understanding software evolution and guiding developers in maintaining and improving the code quality. This study presents an action-based Refactoring Analysis Framework named ActRef, a novel algorithm designed to advance the detection and understanding of Python refactorings through a unique code change action-based analysis of code changes. ActRef mining multiple refactoring types (e.g., move, rename, extract, and inline operations) based on diff actions, covering multiple granularity levels including variable, method, class, and module levels. By focusing on the code change actions, ActRef provides a Python-adaptive solution to detect intricate refactoring patterns. Our evaluation, conducted on 1,914 manually validated refactoring instances from 136 open-source Python projects. The evaluation results show that ActRef achieves high precision(0.80) and recall(0.92), effectively identifying multiple refactoring types. Compared with leading baselines, including PyRef, PyRef with MLRefScanner, DeepSeek-R1 and ChatGPT-4, ActRef consistently demonstrates superior performance in detecting Python refactorings across various types. While matching PyRef in runtime efficiency, ActRef supports a broader spectrum of refactoring types and more refactoring mining levels. ActRef shows an effective and scalable approach for mining refactorings in dynamic Python codebases and introduces a new perspective on understanding code.
