Danny Dig
YOU?
Author Swipe
View article: Leveraging LLMs, IDEs, and Semantic Embeddings for Automated Move Method Refactoring
Leveraging LLMs, IDEs, and Semantic Embeddings for Automated Move Method Refactoring Open
MOVEMETHOD is a hallmark refactoring. Despite a plethora of research tools that recommend which methods to move and where, these recommendations do not align with how expert developers perform MOVEMETHOD. Given the extensive training of La…
Towards Realistic Evaluation of Commit Message Generation by Matching Online and Offline Settings Open
When a Commit Message Generation (CMG) system is integrated into the IDEs and other products at JetBrains, we perform online evaluation based on user acceptance of the generated messages. However, performing online experiments with every c…
Unprecedented Code Change Automation: The Fusion of LLMs and Transformation by Example Open
Software developers often repeat the same code changes within a project or across different projects. These repetitive changes are known as “code change patterns” (CPATs). Automating CPATs is crucial to expedite the software development pr…
EM-Assist: Safe Automated ExtractMethod Refactoring with LLMs Open
Excessively long methods, loaded with multiple responsibilities, are\nchallenging to understand, debug, reuse, and maintain. The solution lies in the\nwidely recognized Extract Method refactoring. While the application of this\nrefactoring…
Together We Go Further: LLMs and IDE Static Analysis for Extract Method Refactoring Open
Long methods that encapsulate multiple responsibilities within a single method are challenging to maintain. Choosing which statements to extract into new methods has been the target of many research tools. Despite steady improvements, thes…
From Commit Message Generation to History-Aware Commit Message Completion Open
Commit messages are crucial to software development, allowing developers to track changes and collaborate effectively. Despite their utility, most commit messages lack important information since writing high-quality commit messages is ted…
CommitChronicle dataset from the paper "From Commit Message Generation to History-Aware Commit Message Completion", ASE 2023 Open
This is the CommitChronicle dataset for commit message generation (and/or completion), introduced in the paper "From Commit Message Generation to History-Aware Commit Message Completion", ASE 2023. For further details, see the attached REA…
CommitChronicle dataset from the paper "From Commit Message Generation to History-Aware Commit Message Completion", ASE 2023 Open
This is the CommitChronicle dataset for commit message generation (and/or completion), introduced in the paper "From Commit Message Generation to History-Aware Commit Message Completion", ASE 2023. For further details, see the attached REA…
PYEVOLVE: Automating Frequent Code Changes in Python ML Systems Open
Because of the naturalness of software and the rapid evolution of Machine Learning (ML) techniques, frequently repeated code change patterns (CPATs) occur often. They range from simple API migrations to changes involving several complex co…
Discovering repetitive code changes in python ML systems Open
Over the years, researchers capitalized on the repetitiveness of software changes to automate many software evolution tasks. Despite the extraordinary rise in popularity of Python-based ML systems, they do not benefit from these advances. …
Inferring and applying type changes Open
Developers frequently change the type of a program element and update all its references to increase performance, security, or maintainability. Manually performing type changes is tedious, error-prone, and it overwhelms developers. Researc…
IntelliTC Open
Developers often change types of program elements. Such refactoring often involves updating not only the type of the element itself, but also the API of all type-dependent references in the code, thus it is tedious and time-consuming. Desp…
IntelliTC: Automating Type Changes in IntelliJ IDEA Open
Developers often change types of program elements. Such refactoring often involves updating not only the type of the element itself, but also the API of all type-dependent references in the code, thus it is tedious and time-consuming. Desp…
Operation-based Refactoring-aware Merging: An Empirical Evaluation Open
Dealing with merge conflicts in version control systems is a challenging task for software developers. Resolving merge conflicts is a time-consuming and error-prone process, which distracts developers from important tasks. Recent work show…
Understanding Software-2.0 Open
Enabled by a rich ecosystem of Machine Learning (ML) libraries, programming using learned models , i.e., Software-2.0 , has gained substantial adoption. However, we do not know what challenges developers encounter when they use ML librarie…
Understanding type changes in Java Open
Developers frequently change the type of a program element and update all its references for performance, security, concurrency,library migration, or better maintainability. Despite type changes being a common program transformation, it is…
Examining User-Developer Feedback Loops in the iOS App Store Open
Application Stores, such as the iTunes App Store, give developers access to their users’ complaints and requests in the form of app reviews. However, little is known about how developers are responding to app reviews. Without such knowledg…
Understanding the use of lambda expressions in Java Open
Java 8 retrofitted lambda expressions, a core feature of functional programming, into a mainstream object-oriented language with an imperative paradigm. However, we do not know how Java developers have adapted to the functional style of th…
View article: Are Web Applications Ready for Parallelism?
Are Web Applications Ready for Parallelism? Open
In recent years, web applications have become pervasive. Their backbone is JavaScript, the only programming language supported by all major web browsers. Most browsers run on desktop or mobile devices with parallel hardware. However, JavaS…
Usage, costs, and benefits of continuous integration in open-source projects Open
Continuous integration (CI) systems automate the compilation, building, and testing of software. Despite CI rising as a big success story in automated software engineering, it has received almost no attention from the research community. F…
COPE Open
Software engineering involves a lot of change as code artifacts are not only created once but maintained over time. In the last 25 years, major paradigms of program development have arisen -- agile development with refactorings, software p…
TDDViz: Using Software Changes to Understand Conformance to Test Driven Development Open
A bad software development process leads to wasted effort and inferior products. In order to improve a software process, it must be first understood. Our unique approach in this paper uses code and test changes to understand conformance to…