Learning the Relation between Code Features and Code Transforms with
  Structured Prediction
  We present in this paper the first approach for structurally predicting code
transforms at the level of AST nodes using conditional random fields. Our
approach first learns offline a probabilistic model that captures how certain
code transforms are applied to certain AST nodes, and then uses the learned
model to predict transforms for new, unseen code snippets. We implement our
approach in the context of repair transform prediction for Java programs. Our
implementation contains a set of carefully designed code features, deals with
the training data imbalance issue, and comprises transform constraints that are
specific to code. We conduct a large-scale experimental evaluation based on a
dataset of 4,590,679 bug fixing commits from real-world Java projects. The
experimental results show that our approach predicts the code transforms with a
success rate varying from 37.1% to 61.1% depending on the transforms.
