Conference paper Open Access

A Structural Model for Contextual Code Changes

Brody, Shaked; Alon, Uri; Yahav, Eran


DataCite XML Export

<?xml version='1.0' encoding='utf-8'?>
<resource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://datacite.org/schema/kernel-4" xsi:schemaLocation="http://datacite.org/schema/kernel-4 http://schema.datacite.org/meta/kernel-4.1/metadata.xsd">
  <identifier identifierType="DOI">10.5281/zenodo.4036303</identifier>
  <creators>
    <creator>
      <creatorName>Brody, Shaked</creatorName>
      <givenName>Shaked</givenName>
      <familyName>Brody</familyName>
      <affiliation>Technion</affiliation>
    </creator>
    <creator>
      <creatorName>Alon, Uri</creatorName>
      <givenName>Uri</givenName>
      <familyName>Alon</familyName>
      <affiliation>Technion</affiliation>
    </creator>
    <creator>
      <creatorName>Yahav, Eran</creatorName>
      <givenName>Eran</givenName>
      <familyName>Yahav</familyName>
      <affiliation>Technion</affiliation>
    </creator>
  </creators>
  <titles>
    <title>A Structural Model for Contextual Code Changes</title>
  </titles>
  <publisher>Zenodo</publisher>
  <publicationYear>2020</publicationYear>
  <subjects>
    <subject>Programming Languages</subject>
    <subject>Machine Learning</subject>
  </subjects>
  <dates>
    <date dateType="Issued">2020-09-18</date>
  </dates>
  <resourceType resourceTypeGeneral="ConferencePaper"/>
  <alternateIdentifiers>
    <alternateIdentifier alternateIdentifierType="url">https://zenodo.org/record/4036303</alternateIdentifier>
  </alternateIdentifiers>
  <relatedIdentifiers>
    <relatedIdentifier relatedIdentifierType="DOI" relationType="IsVersionOf">10.5281/zenodo.4036302</relatedIdentifier>
  </relatedIdentifiers>
  <rightsList>
    <rights rightsURI="https://creativecommons.org/licenses/by/4.0/legalcode">Creative Commons Attribution 4.0 International</rights>
    <rights rightsURI="info:eu-repo/semantics/openAccess">Open Access</rights>
  </rightsList>
  <descriptions>
    <description descriptionType="Abstract">&lt;p&gt;We address the problem of predicting edit completions based on a learned model that was trained on past edits.&lt;br&gt;
Given a code snippet that is partially edited, our goal is to predict a completion of the edit for the rest of the&lt;br&gt;
snippet. We refer to this task as the EditCompletion&amp;nbsp;task and present a novel approach for tackling it. The&lt;br&gt;
main idea is to directly represent structural edits. This allows us to model the likelihood of the edit itself, rather&lt;br&gt;
than learning the likelihood of the edited code. We represent an edit operation as a path in the program&amp;rsquo;s Abstract&lt;br&gt;
Syntax Tree (AST), originating from the source of the edit to the target of the edit. Using this representation, we&lt;br&gt;
present a powerful and lightweight neural model for the EditCompletion&amp;nbsp;task.&lt;/p&gt;

&lt;p&gt;&lt;br&gt;
We conduct a thorough evaluation, comparing our approach to a variety of representation and modeling&lt;br&gt;
approaches that are driven by multiple strong models such as LSTMs, Transformers, and neural CRFs. Our&lt;br&gt;
experiments show that our model achieves 28% relative gain over state-of-the-art sequential models and 2&amp;times;&lt;br&gt;
higher accuracy than syntactic models that learn to generate the edited code instead of modeling the edits&lt;br&gt;
directly. We make our code, dataset, and trained models publicly available.&lt;/p&gt;</description>
  </descriptions>
</resource>
73
16
views
downloads
All versions This version
Views 7373
Downloads 1616
Data volume 488.8 MB488.8 MB
Unique views 7070
Unique downloads 1313

Share

Cite as