PYREF: Refactoring Detection in Python']Python Projects

被引:12
作者
Atwi, Hassan [1 ]
Lin, Bin [1 ]
Tsantalis, Nikolaos [2 ]
Kashiwa, Yutaro [3 ]
Kamei, Yasutaka [3 ]
Ubayashi, Naoyasu [3 ]
Bavota, Gabriele [1 ]
Lanza, Michele [1 ]
机构
[1] USI, Software Inst, Lugano, Switzerland
[2] Concordia Univ, Montreal, PQ, Canada
[3] Kyushu Univ, Fukuoka, Japan
来源
IEEE 21ST INTERNATIONAL WORKING CONFERENCE ON SOURCE CODE ANALYSIS AND MANIPULATION (SCAM 2021) | 2021年
关键词
refactoring detection; !text type='Python']Python[!/text; software maintenance;
D O I
10.1109/SCAM52516.2021.00025
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Refactoring, the process of improving the internal code structure of a software system without altering its external behavior, is widely applied during software development. Understanding how developers refactor source code can help gain better understanding of the software development process and the relationship between various versions of a system. Refactoring detection tools have been developed for many popular programming languages, such as Java (e.g., REFACTORINGMINER and REF-FINDER) but, quite surprisingly, this is not the case for Python, a widely used programming language. Inspired by REFACTORING MINER, we present PYREF, a tool that automatically detects method-level refactoring operations in Python projects. We evaluated PYREF against a manually built oracle and compared it with a PYTHON-ADAPTED REFACTORINGMINER, which converts Python program to Java and detects refactoring operations with REFACTORING MINER. Our results indicate that PYREF can achieve satisfactory precision and detect more refactorings than the current state-of-the-art.
引用
收藏
页码:136 / 141
页数:6
相关论文
共 16 条
[1]   Refactoring Practices in the Context of Modern Code Review: An Industrial Case Study at Xerox [J].
AlOmar, Eman Abdullah ;
AlRubaye, Hussein ;
Mkaouer, Mohamed Wiem ;
Ouni, Ali ;
Kessentini, Marouane .
2021 IEEE/ACM 43RD INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING: SOFTWARE ENGINEERING IN PRACTICE (ICSE-SEIP 2021), 2021, :348-357
[2]  
Aycock J., 2000, P 8 INT PYTHON C, P11
[3]  
De Volder K., 1998, THESIS CITESEER
[4]  
Dig D, 2006, LECT NOTES COMPUT SC, V4067, P404
[5]   Discovering Repetitive Code Changes in ML Systems [J].
Dilhara, Malinda .
PROCEEDINGS OF THE 29TH ACM JOINT MEETING ON EUROPEAN SOFTWARE ENGINEERING CONFERENCE AND SYMPOSIUM ON THE FOUNDATIONS OF SOFTWARE ENGINEERING (ESEC/FSE '21), 2021, :1683-1685
[6]  
Fowler Martin, 2018, Refactoring: improving the design of existing code, Vsecond
[7]  
Kim M., 2010, P 18 ACM SIGSOFT INT, P371
[8]   How We Refactor, and How We Know It [J].
Murphy-Hill, Emerson ;
Parnin, Chris ;
Black, Andrew P. .
IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, 2012, 38 (01) :5-18
[9]  
Prete K, 2010, PROC IEEE INT CONF S
[10]   Machine Learning in Python']Python: Main Developments and Technology Trends in Data Science, Machine Learning, and Artificial Intelligence [J].
Raschka, Sebastian ;
Patterson, Joshua ;
Nolet, Corey .
INFORMATION, 2020, 11 (04)