EDBT 2026 Demo / reviewers in the wild / expert
Di Yang 0001
dblp:29/5427-1
· DBLP profile ↗
8ranked-venue papers
2as first author
0since 2021 · last 2019
0000-0002-4702-6393ORCID · corroborated
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 8 · 2 first-authorDatabases, data management, data science and information retrieval · 2 · 2 first-author
Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.
| Software engineering, system software, and programming languages
4 papers |
Software maintenance and evolution · 54% Empirical software engineering · 36% Compilers and program optimization · 10% | |
| Databases, data mining, and information retrieval
1 paper |
Information retrieval · 100% |
Topics — the 7 heaviest of 7, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Empirical software engineering
mining software repositories |
1.0 | 3 | 2019 | Towards automating precision studies of clone detectors · ICSE 2019 Analyzing and supporting adaptation of online code examples · ICSE 2019 DéjàVu: a map of code duplicates on GitHub · Proc. ACM Program. Lang. 2017 |
Software maintenance and evolution
code clone detection |
0.5 | 2 | 2019 | Towards automating precision studies of clone detectors · ICSE 2019 Analyzing and supporting adaptation of online code examples · ICSE 2019 |
Information retrieval › document retrieval › domain-specific retrieval
code search |
0.4 | 1 | 2019 | Aroma: code recommendation via structural code search · Proc. ACM Program. Lang. 2019 |
Software maintenance and evolution
code recommendation |
0.4 | 1 | 2019 | Aroma: code recommendation via structural code search · Proc. ACM Program. Lang. 2019 |
Software maintenance and evolution
code reuse |
0.4 | 1 | 2019 | Analyzing and supporting adaptation of online code examples · ICSE 2019 |
Compilers and program optimization
code duplication |
0.3 | 1 | 2017 | DéjàVu: a map of code duplicates on GitHub · Proc. ACM Program. Lang. 2017 |
Software maintenance and evolution
software ecosystems |
0.3 | 1 | 2017 | DéjàVu: a map of code duplicates on GitHub · Proc. ACM Program. Lang. 2017 |
Methods — techniques the papers use, named apart from their topics
code corpus indexing · 0.8clustering · 0.8taxonomy construction · 0.4manual validation · 0.4clone detection · 0.4clone classification · 0.4chrome extension · 0.4corpus analysis · 0.3
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2019 | Analyzing and supporting adaptation of online code examplesabstractDevelopers often resort to online Q&A forums such as Stack Overflow (SO) for filling their programming needs. Although code examples on those forums are good starting points, they are often incomplete and inadequate for developers' local program contexts; adaptation of those examples is necessary to integrate them to production code. As a consequence, the process of adapting online code examples is done over and over again, by multiple developers independently. Our work extensively studies these adaptations and variations, serving as the basis for a tool that helps integrate these online code examples in a target context in an interactive manner. We perform a large-scale empirical study about the nature and extent of adaptations and variations of SO snippets. We construct a comprehensive dataset linking SO posts to GitHub counterparts based on clone detection, time stamp analysis, and explicit URL references. We then qualitatively inspect 400 SO examples and their GitHub counterparts and develop a taxonomy of 24 adaptation types. Using this taxonomy, we build an automated adaptation analysis technique on top of GumTree to classify the entire dataset into these types. We build a Chrome extension called ExampleStack that automatically lifts an adaptation-aware template from each SO example and its GitHub counterparts to identify hot spots where most changes happen. A user study with sixteen programmers shows that seeing the commonalities and variations in similar GitHub counterparts increases their confidence about the given SO example, and helps them grasp a more comprehensive view about how to reuse the example differently and avoid common pitfalls. Tianyi Zhang 0001, Di Yang 0001, Cristina V. Lopes, Miryung Kim |
ICSE | 2 |
| 2019 | Towards automating precision studies of clone detectorsabstractCurrent research in clone detection suffers from poor ecosystems for evaluating precision of clone detection tools. Corpora of labeled clones are scarce and incomplete, making evaluation labor intensive and idiosyncratic, and limiting intertool comparison. Precision-assessment tools are simply lacking. We present a semiautomated approach to facilitate precision studies of clone detection tools. The approach merges automatic mechanisms of clone classification with manual validation of clone pairs. We demonstrate that the proposed automatic approach has a very high precision and it significantly reduces the number of clone pairs that need human validation during precision experiments. Moreover, we aggregate the individual effort of multiple teams into a single evolving dataset of labeled clone pairs, creating an important asset for software clone research. Vaibhav Saini, Farima Farmahinifarahani, Yadong Lu, Di Yang 0001, Pedro Martins 0001, Hitesh Sajnani, Pierre Baldi, Cristina V. Lopes |
ICSE | 4 |
| 2019 | On Precision of Code Clone Detection ToolsabstractPrecision and recall are the main metrics used to measure the correctness of clone detectors. These metrics require the existence of labeled datasets containing the ground truth - samples of clone and non-clone pairs. For source code clone detectors, in particular, there are some techniques, as well as a concrete framework, for automatically evaluating recall, down to different types of clones. However, evaluating precision is still challenging, because of the intensive and specialized manual effort required to accomplish the task. Moreover, when precision is reported, it is typically done over all types of clones, making it hard to assess the strengths and weaknesses of the corresponding clone detectors. This paper presents systematic experiments to evaluate precision of eight code clone detection tools. Three judges independently reviewed 12,800 clone pairs to compute the undifferentiated and type-based precision of these tools. Besides providing a useful baseline for future research in code clone detection, another contribution of our work is to unveil important considerations to take into account when doing precision measurements and reporting the results. Specifically, our work shows that the reported precision of these tools leads to significantly different conclusions and insights about the tools when different types of clones are taken into account. It also stresses, once again, the importance of reporting inter-rater agreement. Farima Farmahinifarahani, Vaibhav Saini, Di Yang 0001, Hitesh Sajnani, Cristina V. Lopes |
SANER | 3 |
| 2019 | Aroma: code recommendation via structural code searchabstractProgrammers often write code that has similarity to existing code written somewhere. A tool that could help programmers to search such similar code would be immensely useful. Such a tool could help programmers to extend partially written code snippets to completely implement necessary functionality, help to discover extensions to the partial code which are commonly included by other programmers, help to cross-check against similar code written by other programmers, or help to add extra code which would fix common mistakes and errors. We propose Aroma, a tool and technique for code recommendation via structural code search. Aroma indexes a huge code corpus including thousands of open-source projects, takes a partial code snippet as input, searches the corpus for method bodies containing the partial code snippet, and clusters and intersects the results of the search to recommend a small set of succinct code snippets which both contain the query snippet and appear as part of several methods in the corpus. We evaluated Aroma on 2000 randomly selected queries created from the corpus, as well as 64 queries derived from code snippets obtained from Stack Overflow, a popular website for discussing code. We implemented Aroma for 4 different languages, and developed an IDE plugin for Aroma. Furthermore, we conducted a study where we asked 12 programmers to complete programming tasks using Aroma, and collected their feedback. Our results indicate that Aroma is capable of retrieving and recommending relevant code snippets efficiently. Sifei Luan 0001, Di Yang 0001, Celeste Barnaby, Koushik Sen, Satish Chandra 0001 |
Proc. ACM Program. Lang. | 2 |
| 2017 | Stack overflow in github: any snippets there?abstractWhen programmers look for how to achieve certain programming tasks, Stack Overflow is a popular destination in search engine results. Over the years, Stack Overflow has accumulated an impressive knowledge base of snippets of code that are amply documented. We are interested in studying how programmers use these snippets of code in their projects. Can we find Stack Overflow snippets in real projects? When snippets are used, is this copy literal or does it suffer adaptations? And are these adaptations specializations required by the idiosyncrasies of the target artifact, or are they motivated by specific requirements of the programmer? The large-scale study presented on this paper analyzes 909k non-fork Python projects hosted on Github, which contain 290M function definitions, and 1.9M Python snippets captured in Stack Overflow. Results are presented as quantitative analysis of block-level code cloning intra and inter Stack Overflow and GitHub, and as an analysis of programming behaviors through the qualitative analysis of our findings. Di Yang 0001, Pedro Martins 0001, Vaibhav Saini, Cristina V. Lopes |
MSR | 1 |
| 2017 | DéjàVu: a map of code duplicates on GitHubabstractPrevious studies have shown that there is a non-trivial amount of duplication in source code. This paper analyzes a corpus of 4.5 million non-fork projects hosted on GitHub representing over 428 million files written in Java, C++, Python, and JavaScript. We found that this corpus has a mere 85 million unique files. In other words, 70% of the code on GitHub consists of clones of previously created files. There is considerable variation between language ecosystems. JavaScript has the highest rate of file duplication, only 6% of the files are distinct. Java, on the other hand, has the least duplication, 60% of files are distinct. Lastly, a project-level analysis shows that between 9% and 31% of the projects contain at least 80% of files that can be found elsewhere. These rates of duplication have implications for systems built on open source software as well as for researchers interested in analyzing large code bases. As a concrete artifact of this study, we have created DéjàVu, a publicly available map of code duplicates in GitHub repositories. Cristina V. Lopes, Petr Maj, Pedro Martins 0001, Vaibhav Saini, Di Yang 0001, Jakub Zitny, Hitesh Sajnani, Jan Vitek |
Proc. ACM Program. Lang. | 5 |
| 2016 | From query to usable code: an analysis of stack overflow code snippetsabstractEnriched by natural language texts, Stack Overflow code snippets are an invaluable code-centric knowledge base of small units of source code. Besides being useful for software developers, these annotated snippets can potentially serve as the basis for automated tools that provide working code solutions to specific natural language queries. Di Yang 0001, Aftab Hussain 0001, Cristina V. Lopes |
MSR | 1 |
| 2016 | Collective Intelligence for Smarter API Recommendations in PythonabstractSoftware developers use Application Programming Interfaces (APIs) of libraries and frameworks extensively while writing programs. In this context, the recommendations provided in code completion pop-ups help developers choose the desired methods. The candidate lists recommended by these tools, however, tend to be large, ordered alphabetically and sometimes even incomplete. A fair amount of work has been done recently to improve the relevance of these code completion results, especially for statically typed languages like Java. However, these proposed techniques rely on the static type of the object and are therefore inapplicable for a dynamically typed language like Python. In this paper, we present PyReco, an intelligent code completion system for Python which uses the mined API usages from open source repositories to order the results based on relevance rather than the conventional alphabetic order. To recommend suggestions that are relevant for a working context, a nearest neighbor classifier is used to identify the best matching usage among all the extracted usage patterns. To evaluate the effectiveness of our system, the code completion queries are automatically extracted from projects and tested quantitatively using a ten-fold cross validation technique. The evaluation shows that our approach outperforms the alphabetically ordered API recommendation systems in recommending APIs for standard, as well as, third-party libraries. Andrea Renika D'Souza, Di Yang 0001, Cristina V. Lopes |
SCAM | 2 |