Just-in-Time Code Duplicates Extraction
Eman Abdullah AlOmar, Anton Ivanov, Zarina Kurbatova, Yaroslav, Golubev, Mohamed Wiem Mkaouer, Ali Ouni, Timofey Bryksin, Le Nguyen, Amit, Kini, Aditya Thakur

TL;DR
This paper presents a deep learning-based plugin for IntelliJ IDEA that recommends Extract Method refactorings in real-time, aiming to improve developer workflow and increase refactoring adoption.
Contribution
It introduces a novel machine learning approach using CNNs trained on open source data to recommend refactorings without disrupting developers' workflow.
Findings
CNN achieved an F-measure of 0.82 in refactoring detection
Developers appreciated the plugin's usefulness and workflow integration
The approach effectively recommends refactorings in real-time
Abstract
Refactoring is a critical task in software maintenance, and is usually performed to enforce better design and coding practices, while coping with design defects. The Extract Method refactoring is widely used for merging duplicate code fragments into a single new method. Several studies attempted to recommend Extract Method refactoring opportunities using different techniques, including program slicing, program dependency graph analysis, change history analysis, structural similarity, and feature extraction. However, irrespective of the method, most of the existing approaches interfere with the developer's workflow: they require the developer to stop coding and analyze the suggested opportunities, and also consider all refactoring suggestions in the entire project without focusing on the development context. To increase the adoption of the Extract Method refactoring, in this paper, we…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware Engineering Research · Software System Performance and Reliability · Software Reliability and Analysis Research
