CC2Vec: Distributed Representations of Code Changes
This addresses the need for general, automated feature extraction in software engineering tasks, reducing manual effort, but it is incremental as it builds on existing neural methods for code representation.
The authors tackled the problem of representing code changes for software patches by proposing CC2Vec, a neural network model that learns distributed representations guided by log messages, and it outperformed state-of-the-art techniques in tasks like log message generation, bug fixing patch identification, and just-in-time defect prediction.
Existing work on software patches often use features specific to a single task. These works often rely on manually identified features, and human effort is required to identify these features for each task. In this work, we propose CC2Vec, a neural network model that learns a representation of code changes guided by their accompanying log messages, which represent the semantic intent of the code changes. CC2Vec models the hierarchical structure of a code change with the help of the attention mechanism and uses multiple comparison functions to identify the differences between the removed and added code. To evaluate if CC2Vec can produce a distributed representation of code changes that is general and useful for multiple tasks on software patches, we use the vectors produced by CC2Vec for three tasks: log message generation, bug fixing patch identification, and just-in-time defect prediction. In all tasks, the models using CC2Vec outperform the state-of-the-art techniques.