EDBT 2026 Demo / reviewers in the wild / expert
Danilo Silva 0002
dblp:18/3689-2
· DBLP profile ↗
5ranked-venue papers
4as first author
1since 2021 · last 2021
0000-0003-1782-2185ORCID · verified
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 5 · 4 first-author · 1 since 2021Databases, data management, data science and information retrieval · 1 · 1 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
3 papers |
Software maintenance and evolution · 59% Empirical software engineering · 41% |
Topics — the 3 heaviest of 3, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Empirical software engineering
mining software repositories |
0.6 | 2 | 2018 | Assessing the threat of untracked changes in software evolution · ICSE 2018 Why we refactor? confessions of GitHub contributors · SIGSOFT FSE 2016 |
Software maintenance and evolution › refactoring
refactoring detection |
0.5 | 1 | 2021 | RefDiff 2.0: A Multi-Language Refactoring Detection Tool · IEEE Trans. Software Eng. 2021 |
Software maintenance and evolution
refactoring |
0.3 | 2 | 2018 | Why we refactor? confessions of GitHub contributors · SIGSOFT FSE 2016 Assessing the threat of untracked changes in software evolution · ICSE 2018 |
Methods — techniques the papers use, named apart from their topics
plugin architecture · 0.5code structure tree · 0.5empirical study · 0.3thematic analysis · 0.2
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2021 | RefDiff 2.0: A Multi-Language Refactoring Detection ToolabstractIdentifying refactoring operations in source code changes is valuable to understand software evolution. Therefore, several tools have been proposed to automatically detect refactorings applied in a system by comparing source code between revisions. The availability of such infrastructure has enabled researchers to study refactoring practice in large scale, leading to important advances on refactoring knowledge. However, although a plethora of programming languages are used in practice, the vast majority of existing studies are restricted to the Java language due to limitations of the underlying tools. This fact poses an important threat to external validity. Thus, to overcome such limitation, in this paper we propose RefDiff 2.0, a multi-language refactoring detection tool. Our approach leverages techniques proposed in our previous work and introduces a novel refactoring detection algorithm that relies on the Code Structure Tree (CST), a simple yet powerful representation of the source code that abstracts away the specificities of particular programming languages. Despite its language-agnostic design, our evaluation shows that RefDiff's precision (96 percent) and recall (80 percent) are on par with state-of-the-art refactoring detection approaches specialized in the Java language. Our modular architecture also enables one to seamlessly extend RefDiff to support other languages via a plugin system. As a proof of this, we implemented plugins to support two other popular programming languages: JavaScript and C. Our evaluation in these languages reveals that precision and recall ranges from 88 to 91 percent. With these results, we envision RefDiff as a viable alternative for breaking the single-language barrier in refactoring research and in practical applications of refactoring detection. Danilo Silva 0002, João Paulo da Silva, Gustavo Jansen de Souza Santos, Ricardo Terra, Marco Túlio Valente |
IEEE Trans. Software Eng. | 1 |
| 2018 | Assessing the threat of untracked changes in software evolutionabstractWhile refactoring is extensively performed by practitioners, many Mining Software Repositories (MSR) approaches do not detect nor keep track of refactorings when performing source code evolution analysis. In the best case, keeping track of refactorings could be unnecessary work; in the worst case, these untracked changes could significantly affect the performance of MSR approaches. Since the extent of the threat is unknown, the goal of this paper is to assess whether it is significant. Based on an extensive empirical study, we answer positively: we found that between 10 and 21% of changes at the method level in 15 large Java systems are untracked. This results in a large proportion (25%) of entities that may have their histories split by these changes, and a measurable effect on at least two MSR approaches. We conclude that handling untracked changes should be systematically considered by MSR studies. Andre Hora 0001, Danilo Silva 0002, Marco Túlio Valente, Romain Robbes |
ICSE | 2 |
| 2017 | RefDiff: detecting refactorings in version historiesabstractRefactoring is a well-known technique that is widely adopted by software engineers to improve the design and enable the evolution of a system. Knowing which refactoring operations were applied in a code change is a valuable information to understand software evolution, adapt software components, merge code changes, and other applications. In this paper, we present RefDiff, an automated approach that identifies refactorings performed between two code revisions in a git repository. RefDiff employs a combination of heuristics based on static analysis and code similarity to detect 13 well-known refactoring types. In an evaluation using an oracle of 448 known refactoring operations, distributed across seven Java projects, our approach achieved precision of 100% and recall of 88%. Moreover, our evaluation suggests that RefDiff has superior precision and recall than existing state-of-the-art approaches. Danilo Silva 0002, Marco Túlio Valente |
MSR | 1 |
| 2016 | Why we refactor? confessions of GitHub contributorsabstractRefactoring is a widespread practice that helps developers to improve the maintainability and readability of their code. However, there is a limited number of studies empirically investigating the actual motivations behind specific refactoring operations applied by developers. To fill this gap, we monitored Java projects hosted on GitHub to detect recently applied refactorings, and asked the developers to explain the reasons behind their decision to refactor the code. By applying thematic analysis on the collected responses, we compiled a catalogue of 44 distinct motivations for 12 well-known refactoring types. We found that refactoring activity is mainly driven by changes in the requirements and much less by code smells. Extract Method is the most versatile refactoring operation serving 11 different purposes. Finally, we found evidence that the IDE used by the developers affects the adoption of automated refactoring tools. Danilo Silva 0002, Nikolaos Tsantalis, Marco Túlio Valente |
SIGSOFT FSE | 1 |
| 2014 | Recommending automated extract method refactoringsabstractExtract Method is a key refactoring for improving program comprehension. However, recent empirical research shows that refactoring tools designed to automate Extract Methods are often underused. To tackle this issue, we propose a novel approach to identify and rank Extract Method refactoring opportunities that are directly automated by IDE-based refactoring tools. Our approach aims to recommend new methods that hide structural dependencies that are rarely used by the remaining statements in the original method. We conducted an exploratory study to experiment and define the best strategies to compute the dependencies and the similarity measures used by the proposed approach. We also evaluated our approach in a sample of 81 extract method opportunities generated for JUnit and JHotDraw, achieving a precision of 48% (JUnit) and 38% (JHotDraw). Danilo Silva 0002, Ricardo Terra, Marco Túlio Valente |
ICPC | 1 |