Diff Feature Matching Network in Refactoring DetectionBest Paper Award
During software maintenance, it is often important to understand the reasons for code changes, so tools are being developed to automatically detect changes due to refactoring. Among these, RefDiff supports multiple programming languages by representing code changes (so-called diffs) by means of a language-independent abstract syntax tree containing nodes for the code parts removed and added during the change. Corresponding nodes, i.e., nodes participating in a refactoring, are matched based on text similarity, which leads to good precision, but the algorithmic limitation of computing text similarity also entail a large number of false negatives. To overcome this, we trained a neural network to classify to identify features in diffs to be used for identifying refactorings. The main contribution of this paper is an approach for encoding differences between nodes in the syntax trees into image data for neural network matching. We have shown that the diff feature matching network not only improves the precision of RefDiff 2.0 to 98.6% and recall to 93.2%, but also continues to support detection tasks in multiple programming languages, with excellent robustness.
Fri 9 DecDisplayed time zone: Osaka, Sapporo, Tokyo change
13:00 - 14:00 | Source Code Analysis 2Technical Track / ERA - Early Research Achievements at Room1 Chair(s): Yoshiki Higo Osaka University | ||
13:00 20mPaper | Diff Feature Matching Network in Refactoring DetectionBest Paper Award Technical Track | ||
13:20 15mPaper | Reusing My Own Code: Preliminary Results for Competitive Coding in Jupyter Notebooks ERA - Early Research Achievements Natanon Ritta Mahidol University, Tasha Settewong Mahidol University, Raula Gaikovina Kula Nara Institute of Science and Technology, Chaiyong Rakhitwetsagul Mahidol University, Thailand, Thanwadee Sunetnanta Mahidol University, Kenichi Matsumoto Nara Institute of Science and Technology | ||
13:35 20mPaper | An Experimental Comparison of Clone Detection Techniques using Java Bytecode Technical Track |