Tool Support for Code Change Inspection with Deep Learning in Evolving Software

Similar changes are common during the development of a project. Many of the changes are similar but appears different based on the local context. During code review the code changes are inspected per each source file. The process of identifying similar code change is time-taking and error-prone. To overcome this problem, we propose Similar Changes Inspection with Deep Learning (SIL) which (1) creates a generalized edit script based on the data and control dependence to (2) identify and summarize similar code changes by (3) modelling a deep learning classifier. In order to train a classifier, we have identified clones of four types from a clone database mined from 25,000 programs. SIL summarizes the changes and identifies the change anomalies. To obtain feedback on the SIL approach, we have conducted an user study with seven Computer Science students. The study revealed that SIL helped these developers to conduct peer code reviews more effectively. SIL is available as an Eclipse plug-in and its demonstration video is available at https://sites.google.com/unomaha.edu/codereview-deeplearning.

[1]  Harald C. Gall,et al.  Change Distilling:Tree Differencing for Fine-Grained Source Code Change Extraction , 2007, IEEE Transactions on Software Engineering.

[2]  Hoan Anh Nguyen,et al.  Detection of recurring software vulnerabilities , 2010, ASE.

[3]  Miryung Kim,et al.  Identifying and Summarizing Systematic Code Changes via Rule Inference , 2013, IEEE Transactions on Software Engineering.

[4]  Matias Martinez,et al.  Fine-grained and accurate source code differencing , 2014, ASE.

[5]  Yuanyuan Zhou,et al.  CP-Miner: finding copy-paste and related bugs in large-scale software code , 2006, IEEE Transactions on Software Engineering.

[6]  Alessandro Orso,et al.  A differencing algorithm for object-oriented programs , 2004, Proceedings. 19th International Conference on Automated Software Engineering, 2004..

[7]  Miryung Kim,et al.  Interactive Code Review for Systematic Changes , 2015, 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering.

[8]  Zhendong Su,et al.  DECKARD: Scalable and Accurate Tree-Based Detection of Code Clones , 2007, 29th International Conference on Software Engineering (ICSE'07).

[9]  Dongmei Zhang,et al.  How do software engineers understand code changes?: an exploratory study in industry , 2012, SIGSOFT FSE.

[10]  Zhendong Su,et al.  Context-based detection of clone-related bugs , 2007, ESEC-FSE '07.

[11]  Miryung Kim,et al.  Systematic editing: generating program transformations from an example , 2011, PLDI '11.

[12]  Miryung Kim,et al.  Lase: Locating and applying systematic edits by learning from examples , 2013, 2013 35th International Conference on Software Engineering (ICSE).

[13]  Barbara G. Ryder,et al.  Crisp: a debugging tool for Java programs , 2005, 21st IEEE International Conference on Software Maintenance (ICSM'05).

[14]  Miryung Kim,et al.  Discovering and representing systematic code changes , 2009, 2009 IEEE 31st International Conference on Software Engineering.

[15]  Chanchal Kumar Roy,et al.  BigCloneEval: A Clone Detection Tool Evaluation Framework with BigCloneBench , 2016, 2016 IEEE International Conference on Software Maintenance and Evolution (ICSME).