Not logged in.

Contribution Details

Type Master's Thesis
Scope Discipline-based scholarship
Title Deep Learning for Code Completion
Organization Unit
Authors
  • Yury Belevskiy
Supervisors
  • Harald Gall
  • Carol Alexandru
Language
  • English
Institution University of Zurich
Faculty Faculty of Business, Economics and Informatics
Date 2017
Abstract Text We present a novel technique for method call completion in dynamically typed programming languages. Existing completion systems typically rely on language-specific heuristics or run- time information, because object types can rarely be identified from plain-text source code alone. Our approach uses recurrent neural networks for predicting method names based on the pre- ceding context available in plain-text source code. Using source code of 1, 000 Python projects, we propose three preprocessor strategies that identify parts of the source code relevant for code completion and evaluate them quantitatively. We then compare the best of the resulting models to industry-leading code completion assistants. Our findings show that the proposed approach, based soley on plain-text source code, offers a level of quality for method name suggestions com- parable to more complex state-of-the-art techniques. We further demonstrate that our approach can be applied to other dynamically typed programming languages without significant adapta- tion effort.
Zusammenfassung Wir präsentieren eine neuartige Methode zur Auto-Vervollständigung von Methodenaufrufen in dynamisch typisierten Programmiersprachen. Existierende Vervollständigungssysteme benötigen zumeist sprachen-spezifische Heuristiken oder Laufzeit-Informationen, weil Objekttypen selten nur auf Basis des Klartext-Quellcodes identifiziert weden können. Unser Ansatz verwendet Recurrent Neural Networks um Methodennamen allein auf Grund des verfügbaren, vorangehenden Kontexts im Quellcode vorherzusagen. Mittels dem Quellcode aus 1000 Python Projekten erzeugen wir drei Datenverarbeitungs-Strategien, die die für die Vervollständigung relevanten Quellcodeteile identifizieren, und evaluieren diese quantitativ. Dann vergleichen wir das beste der resultierenden Modelle mit industrieführenden Code-Vervollständigungs-Assistenten. Unsere Ergebnisse zeigen, dass unser Ansatz, basierend allein auf Klartext-Quellcode, eine vergleichbare Qualität der vorgeschlagenen Vervollständigungen aufzeigt wie moderne, komplexere Ansätze. Des weiteren zeigen wir, dass unser Ansatz ohne signifikanten Arbeitsaufwand für andere dynamisch typisierte Sprachen eingesetzt werden kann.
PDF File Download
Export BibTeX