
Self-Supervised Learning on Source Code to Assist Software Developers
Dissertation

Zusammenfassung
This dissertation addresses two challenges inherent in software development: code reuse and quality. It explores the use of Machine Learning (ML), specifically transformer models, to address these challenges. The transformer architecture has recently become the de facto standard in Natural Language Processing (NLP). While code could be treated similar to natural language text, it offers unique opportunities and challenges: it follows a rigid syntax, combines structural with natural language elements, has operational semantics (i.e., code executes), and hence requires a different "understanding" than natural language. To this end, this thesis develops strategies to incorporate the structural properties of source code into transformer models, and improves tasks that require semantic code understanding of ML models, such as code summarization, code retrieval, and quality assessment of code identifiers. The first task, code summarization, generates natural language descriptions for code snippets, which assists developers at the tedious task of writing documentation. The second task investigates a strategy for code retrieval, called Contextualized Code Search (CCS), that aims at an opportunistic code reuse, by allowing the developer to retrieve relevant code snippets from a codebase based on a developer's current coding context and cursor position alone. The third task explores assessing the quality of identifiers in source code based on established coding guidelines and ML models, which are essential for code readability and maintainability.
The dissertation is organized into two parts: Part I Models and Techniques, and Part II Applications. The first part introduces novel approaches to integrate structural information from Abstract Syntax Trees (ASTs) into transformer models. Chapter 3 extends relative positional embeddings to encode structural relationships between nodes in the AST and proposes a new structure-aware loss function based on predicting the Lowest Common Ancestor (LCA) of nodes in trees. Chapter 4 follows a different strategy to integrate structural information, namely through a structure-aware pretraining. It presents a novel self-supervised span-selection, which selects spans for masking based on the AST, and suggests improvements to the structural task identifier deobfuscation. The main result is a multi-task encoder-decoder Language Model (LM), called SyntaxPT, that achieved state-of-the-art code understanding performance at the time of development.
Finally, Chapter 5 studies the application of SyntaxPT to code retrieval, specifically Contextualized Code Search (CCS). The chapter develops a self-supervised training strategy and model for CCS, SyntaxPT-CCS, and introduces the COCOS dataset, the first dataset of its kind allowing to directly evaluate CCS performance. The chapter demonstrates that SyntaxPT-CCS outperforms traditional keyword-based retrieval methods.
The second part of this thesis applies the SyntaxPT and SyntaxPT-CCS models to two highly relevant tasks in software development, code reuse and identifier quality assessment, and investigates the aforementioned models' utility from a practical perspective. Chapter 6 introduces CodeBuddy, a prototype application for CCS, and introduces enhancements to the pretraining strategy to improve retrieval robustness when interacting with end-users. The chapter validates the effectiveness through two user studies: a controlled experiment with 41 computer science students and a three-month case study with four professional software developers. The final Chapter 7 explores the application of the SyntaxPT model to assess the quality of identifiers in source code. To do so, it introduces novel self-supervised scoring functions based on the likelihood estimated by the LM to detect violations of established identifier naming guidelines. The chapter introduces the first dataset for assessing identifier quality based on coding guidelines and demonstrates that the SyntaxPT model outperforms other state-of-the-art language models on this task.
Diese Dissertation befasst sich mit zwei wesentlichen Bestandteilen der Softwareentwicklung: Code-Reuse und Code-Qualität. Dafür untersucht diese Arbeit den Einsatz von maschinellem Lernen (ML), insbesondere von Transformermodellen. Die Transformer-Architektur ist in letzter Zeit zum de facto Standard im Bereich der Verarbeitung natürlicher Sprache (NLP) geworden. Obwohl Code ähnlich wie natürlichsprachlicher Text behandelt werden könnte, bietet er doch einzigartige Möglichkeiten und Herausforderungen. Er besteht aus einer klar definierten Syntax, kombiniert syntaktische mit natürlichsprachlichen Elementen, hat eine operative Semantik (d.h. Code kann ausgeführt werden) und erfordert daher eine andere Art von Verständnis als natürliche Sprache. Daher werden in dieser Arbeit Strategien entwickelt, um die syntaktischen Eigenschaften von Programm-Code in Transformermodellen nutzbar zu machen. Dabei wird versucht die Performance in Anwendungsgebieten zu verbessern, die ein semantisches Codeverständnis von ML-Modellen erfordern, wie beispielsweise automatische Dokumentierung von Code, Code-Suche und Qualitätsschätzung von Bezeichnern im Code. Im ersten Anwendungsgebiet, der Erzeugung von Dokumentationen, werden natürlichsprachliche Beschreibungen für Code-Passagen generiert. Im zweiten Anwendungsgebiet wird eine neuartige Strategie für die Code-Suche untersucht: die kontextualisierte Codesuche (CCS). CCS findet allein basierend auf dem Code im Editor und einer Cursorposition hilfreiche Code-Passagen in einer Codebasis. So ermöglicht CCS eine opportunistische Wiederverwendung von Code und einen niederschwelligen Austausch zwischen Entwicklern. In einem dritten Anwendungsgebiet wird die Nutzung von ML-Modellen zur Schätzung der Qualität von Bezeichnern im Code untersucht, basierend auf etablierten Guidelines. Bezeichner sind ein wesentlicher Faktor für die Lesbarkeit und Wartbarkeit des Codes und daher von großer Bedeutung für die Softwarequalität.
Die Dissertation gliedert sich in zwei Hauptteile: Part I Modelle und Techniken, und Part II Anwendungen. Der erste Teil untersucht neuartige Ansätze, um die syntaktischen Informationen aus Syntaxbäumen (ASTs) in Transformermodellen nutzbar zu machen. Dafür erweitert Kapitel 3 die Transformerarchitektur um relative Positionsembeddings, die es ermöglichen die strukturellen Beziehungen zwischen Knoten im AST zu kodieren und schlägt eine neue Lossfunktion vor, die den kleinsten gemeinsamen Vorfahren (LCA) zweier Knoten vorhersagt. Kapitel 4 verfolgt durch ein syntaxbasiertes Pretraining eine andere Strategie, um die syntaktischen Informationen nutzen zu können. Es wird ein neuer selbstüberwachter struktureller Pretrainingtask vorgestellt, bei dem Teilelemente basierend auf dem Syntaxbaum maskiert werden. Zudem wird ein weiterer struktureller Pretrainingtask verbessert, bei dem Bezeichner maskiert werden. Der Hauptbeitrag ist ein Encoder-Decoder-Sprachmodell (LM), genannt SyntaxPT, das mit verschiedenen strukturellen und regulären Pretrainingtasks trainiert wird und zum Zeitpunkt der Entwicklung herausragende Ergebnisse auf Codeverständnis Benchmarks erzielte. In Kapitel 5 wird schließlich die Anwendung von SyntaxPT für Code-Suche untersucht, insbesondere für kontextualisierte Codesuche (CCS). Hauptbeitrag des Kapitels ist eine selbstüberwachte Pretrainingsstrategie und ein Modell für CCS, genannt SyntaxPT-CCS. Außerdem wird ein Benchmark-Datensatz namens COCOS vorgestellt. COCOS ist der erste verfügbare Datensatz für CCS, der eine direkte Evaluation von CCS-Modellen ermöglicht. Es wird gezeigt, dass das selbstüberwachte SyntaxPT-CCS Modell traditionelle schlagwortbasierte Suchmethoden übertrifft.
Der zweite Teil dieser Arbeit wendet die Modelle SyntaxPT und SyntaxPT-CCS auf den zuvor genannten Themengebieten in der Softwareentwicklung an und untersucht den Nutzen der genannten Modelle aus praktischer Sicht: (1) Wiederverwendung von Code mit CCS und (2) die Bewertung der Qualität von Bezeichnern. Dafür wird in Kapitel 6 CodeBuddy vorgestellt, ein Prototyp für die Interaktion mit dem CCS-Modell. Außerdem werden Verbesserungen der Pretraining-Strategie vorgestellt, um die Robustheit des CCS-Modells bei der Interaktion mit echten Nutzern zu verbessern. Des Weiteren wird in diesem Kapitel die Nützlichkeit anhand zweier Nutzerstudien evaluiert. Dies erfolgt zum einen anhand eines kontrollierten Experiments mit 41 Informatikstudenten und zum anderen anhand einer dreimonatigen Fallstudie mit vier professionellen Softwareentwicklern. Das abschließende Kapitel 7 untersucht die Anwendung des SyntaxPT-Modells für die Schätzung der Qualität von Bezeichnern in Programm-Code. Dafür werden neuartige selbstüberwachte Bewertungsfunktionen vorgestellt, die die Wahrscheinlichkeiten des Sprachmodells nutzen, um Verstöße gegen etablierte Guidelines zur Benamung von Bezeichnern zu erkennen. Das Kapitel stellt den ersten Datensatz zur Bewertung der Qualität von Bezeichnern auf der Grundlage von Guidelines vor und zeigt, dass das SyntaxPT-Modell andere moderne Sprachmodelle bei dieser Aufgabe übertrifft.
Schlagworte
Machine Learning
Natural Language Processing
Representation Learning
Code Understanding
Language Models
Code Retrieval
Code Search
Contextualized Code Search
Identifier Naming
Variable Names
Identifier Quality
Retrieval
Code Generation
Transformer
Abstract Syntax Trees
Pretraining
Natural Language Processing
Representation Learning
Code Understanding
Language Models
Code Retrieval
Code Search
Contextualized Code Search
Identifier Naming
Variable Names
Identifier Quality
Retrieval
Code Generation
Transformer
Abstract Syntax Trees
Pretraining
DDC-Klassifikation
004 Informatik
Umfang
xx, 284 S.
Beziehung zu anderer Publikation
Einrichtung
Fachbereich Design Informatik Medien
Promotionszentrum Angewandte Informatik
Promotionszentrum Angewandte Informatik
Link zur Veröffentlichung
Sammlungen
- Alle Dissertationen [18]
BibTeX
@phdthesis{Villmow2025,
author={Villmow, Johannes},
title={Self-Supervised Learning on Source Code to Assist Software Developers},
pages={xx, 284 S.},
year={2025},
publisher={Hochschule RheinMain},
school={Hochschule RheinMain, Wiesbaden},
url={https://hlbrm.pur.hebis.de/xmlui/handle/123456789/369}
}