title: Advancing program representation and leveraging big code for automatic program transformation
Creators: name: Chen, Binger
Publisher: name: Technische Universität Berlin
Year: 2024
Subjects: subject: 000 Informatik, Informationswissenschaft, allgemeine Werke::000 Informatik, Wissen, Systeme::004 Datenverarbeitung; Informatik
subject: program representation
subject: big code
subject: automatic program transformation
subject: code translation
subject: code stylization

description: This work explores the potential of leveraging the large amount of available code in open-source repositories and community question-answering sites, collectively known as Big Code, to automate and enhance program transformation processes. With billions of lines of code across various programming languages and styles, the opportunity to enhance software development workflows through code reuse is significant. This research focuses on two primary tasks: code translation and code style transfer, aiming to streamline these processes by utilizing automated methods upon the rich resources of Big Code. The core component of this work is a novel code search engine designed to facilitate the retrieval of code snippets that, while functionally similar, differ in language or stylistic features. This engine utilizes a unique feature representation focused exclusively on content features, enabling precise and efficient identification and retrieval of relevant code snippets from the extensive Big Code databases. This approach not only addresses the challenges of program transformation but also capitalizes on the abundance of existing code to enhance development efficiency and effectiveness. This work introduces methodologies for both code translation and code style transfer. For code translation, we propose a retrieval-based unsupervised approach and data augmentation methods for a supervised approach with data derived from Big Code, aimed at improving the accuracy and efficiency of translating code between languages. We enhanced the program feature representation by embedding the features of the target language using auto-encoders. For code style transfer, we develop a system that can either directly retrieve code snippets in the desired style or generate new code snippets through a deep learning-based model, thereby facilitating the adaptation of code to various stylistic guidelines without altering its functionality. We enhanced the program feature representation by encoding the content features of the input code and the style features of the target style individually through a Siamese network. Through extensive experimentation, we evaluate the performance of our systems, demonstrating their effectiveness, efficiency, and scalability. Our findings indicate that leveraging Big Code and enhanced program representation for automated program transformation can significantly reduce manual coding effort and foster the dissemination of coding best practices.
description: Diese Arbeit erforscht das Potenzial, den großen Umfang an verfügbarem Code in Open-Source-Repositories und Community-Frage-Antwort-Plattformen, kollektiv bekannt als Big Code, zu nutzen, um Programmtransformationsprozesse zu automatisieren und zu verbessern. Mit Milliarden von Codezeilen in verschiedenen Programmiersprachen und -stilen ist die Möglichkeit, Softwareentwicklungsabläufe durch Code-Wiederverwendung zu verbessern, bedeutend. Diese Forschung konzentriert sich auf zwei Hauptaufgaben: Code-Übersetzung und Code-Stil-Transfer, mit dem Ziel, diese Prozesse durch die Nutzung automatisierter Methoden auf den reichhaltigen Ressourcen von Big Code zu vereinfachen. Der Kern dieser Arbeit ist eine neuartige Codesuchmaschine, die darauf ausgelegt ist, die Wiederauffindung von Codeschnipseln zu erleichtern, die, obwohl sie funktional ähnlich sind, sich in Sprache oder stilistischen Merkmalen unterscheiden. Diese Engine nutzt eine einzigartige Merkmalsrepräsentation, die ausschließlich auf Inhaltsmerkmalen fokussiert ist, und ermöglicht die präzise und effiziente Identifizierung und Wiederbeschaffung relevanter Codeschnipsel aus den umfangreichen Big Code-Datenbanken. Dieser Ansatz adressiert nicht nur die Herausforderungen der Programmtransformation, sondern nutzt auch den Überfluss an vorhandenem Code, um die Entwicklungseffizienz und -effektivität zu steigern. In dieser Arbeit werden Methodologien sowohl für die Code-Übersetzung als auch für den Code-Stil-Transfer eingeführt. Für die Code-Übersetzung schlagen wir einen auf Wiederbeschaffung basierenden, unbeaufsichtigten Ansatz vor sowie Datenanreicherungsmethoden für einen beaufsichtigten Ansatz mit Daten, die aus Big Code abgeleitet sind, um die Genauigkeit und Effizienz der Übersetzung von Code zwischen Sprachen zu verbessern. Wir haben die Programmmerkmalsrepräsentation verbessert, indem wir die Merkmale der Zielsprache mit Auto-Encodern eingebettet haben. Für den Code-Stil-Transfer entwickeln wir ein System, das entweder direkt Codeschnipsel im gewünschten Stil abrufen oder neue Codeschnipsel durch ein auf tiefem Lernen basierendes Modell generieren kann, wodurch die Anpassung von Code an verschiedene stilistische Richtlinien ohne Änderung seiner Funktionalität erleichtert wird. Wir haben die Programmmerkmalsrepräsentation verbessert, indem wir die Inhaltsmerkmale des Eingabecodes und die Stilmerkmale des Zielstils individuell durch ein Siamese Neural Network kodiert haben. Durch umfangreiche Experimente bewerten wir die Leistung unserer Systeme und demonstrieren deren Wirksamkeit, Effizienz und Skalierbarkeit. Unsere Ergebnisse zeigen, dass die Nutzung von Big Code und verbesserten Programmrepräsentationen für die automatisierte Programmtransformation den manuellen Codierungsaufwand erheblich reduzieren und die Verbreitung von Best Practices im Coding fördern kann.