-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.json
More file actions
1 lines (1 loc) · 47.9 KB
/
index.json
File metadata and controls
1 lines (1 loc) · 47.9 KB
1
[{"authors":["alexander-serebrenik"],"categories":null,"content":"","date":1645747200,"expirydate":-62135596800,"kind":"term","lang":"en","lastmod":1645747200,"objectID":"de38b252e083dbe002e997aa9f2aeca0","permalink":"https://felipeebert.github.io/author/alexander-serebrenik/","publishdate":"0001-01-01T00:00:00Z","relpermalink":"/author/alexander-serebrenik/","section":"authors","summary":"","tags":null,"title":"Alexander Serebrenik","type":"authors"},{"authors":["admin"],"categories":null,"content":"Hello! Starting from September 2022, I am working as a teacher at the Fontys University of Applied Sciences. From February of 2022 to August of 2022 I worked as a postdoctoral researcher at the Jheronimus Academy of Data Science, a collaboration between Tilburg University and Eindhoven Technical University, with Prof. Willem-Jan Van Den Heuvel. From March of 2020 to January of 2022, I worked as a postdoctoral researcher (with teaching assistant function) at the Department of Mathematics and Computer Science, Eindhoven University of Technology (TU/e), working with Prof. Alexander Serebrenik. From March of 2019 to February of 2020, I worked as a postdoctoral researcher at the Informatics Center (CIn), Federal University of Pernambuco (UFPE), along with the Dr. Fernando Castor.\nIn 2019 I obtained my PhD degree from CIn-UFPE under supervision of Dr. Fernando Castor and Prof. Alexander Serebrenik. In 2013 I obtained my master\u0026rsquo;s degree from CIn-UFPE, working under supervision of Dr. Fernando Castor. In 2009 I got my bachelor\u0026rsquo;s degree from CIn-UFPE.\nMy research interests are related to how software systems and developers interact with each other. I\u0026rsquo;m interested in both technical and social aspects of software maintenance, specifically code reviews, mining software repositories, and also social development aspects. In the past, I also have worked with error handling and software energy consumption.\n","date":1645747200,"expirydate":-62135596800,"kind":"term","lang":"en","lastmod":1645747200,"objectID":"2525497d367e79493fd32b198b28f040","permalink":"https://felipeebert.github.io/author/felipe-ebert/","publishdate":"0001-01-01T00:00:00Z","relpermalink":"/author/felipe-ebert/","section":"authors","summary":"Hello! Starting from September 2022, I am working as a teacher at the Fontys University of Applied Sciences. From February of 2022 to August of 2022 I worked as a postdoctoral researcher at the Jheronimus Academy of Data Science, a collaboration between Tilburg University and Eindhoven Technical University, with Prof.","tags":null,"title":"Felipe Ebert","type":"authors"},{"authors":["christoph-treude"],"categories":null,"content":"","date":1645056000,"expirydate":-62135596800,"kind":"term","lang":"en","lastmod":1645056000,"objectID":"10237c0cf92cc8b2790b64f617eabb3d","permalink":"https://felipeebert.github.io/author/christoph-treude/","publishdate":"0001-01-01T00:00:00Z","relpermalink":"/author/christoph-treude/","section":"authors","summary":"","tags":null,"title":"Christoph Treude","type":"authors"},{"authors":["fernando-castor"],"categories":null,"content":"","date":1645056000,"expirydate":-62135596800,"kind":"term","lang":"en","lastmod":1645056000,"objectID":"c331a41678ecb79c5fe04f1bdd0d6b4a","permalink":"https://felipeebert.github.io/author/fernando-castor/","publishdate":"0001-01-01T00:00:00Z","relpermalink":"/author/fernando-castor/","section":"authors","summary":"","tags":null,"title":"Fernando Castor","type":"authors"},{"authors":["nicole-novielli"],"categories":null,"content":"","date":1645056000,"expirydate":-62135596800,"kind":"term","lang":"en","lastmod":1645056000,"objectID":"26ee8547508eb2e024b1a80d0f95bda7","permalink":"https://felipeebert.github.io/author/nicole-novielli/","publishdate":"0001-01-01T00:00:00Z","relpermalink":"/author/nicole-novielli/","section":"authors","summary":"","tags":null,"title":"Nicole Novielli","type":"authors"},{"authors":["rodrigo-andrade"],"categories":null,"content":"","date":1630454400,"expirydate":-62135596800,"kind":"term","lang":"en","lastmod":1630454400,"objectID":"291e59682a6e911c2cb76221a26ec027","permalink":"https://felipeebert.github.io/author/rodrigo-andrade/","publishdate":"0001-01-01T00:00:00Z","relpermalink":"/author/rodrigo-andrade/","section":"authors","summary":"","tags":null,"title":"Rodrigo Andrade","type":"authors"},{"authors":["leopoldo-teixeira"],"categories":null,"content":"","date":1580515200,"expirydate":-62135596800,"kind":"term","lang":"en","lastmod":1580515200,"objectID":"aefab7dc2d56da48af1d654a07793db7","permalink":"https://felipeebert.github.io/author/leopoldo-teixeira/","publishdate":"0001-01-01T00:00:00Z","relpermalink":"/author/leopoldo-teixeira/","section":"authors","summary":"","tags":null,"title":"Leopoldo Teixeira","type":"authors"},{"authors":["victor-oliveira"],"categories":null,"content":"","date":1580515200,"expirydate":-62135596800,"kind":"term","lang":"en","lastmod":1580515200,"objectID":"031a063990cf68878e8254307106e448","permalink":"https://felipeebert.github.io/author/victor-oliveira/","publishdate":"0001-01-01T00:00:00Z","relpermalink":"/author/victor-oliveira/","section":"authors","summary":"","tags":null,"title":"Victor Oliveira","type":"authors"},{"authors":["gustavo-pinto"],"categories":null,"content":"","date":1456790400,"expirydate":-62135596800,"kind":"term","lang":"en","lastmod":1456790400,"objectID":"d876eb829f5b9a41a94fd3f4136a72f0","permalink":"https://felipeebert.github.io/author/gustavo-pinto/","publishdate":"0001-01-01T00:00:00Z","relpermalink":"/author/gustavo-pinto/","section":"authors","summary":"","tags":null,"title":"Gustavo Pinto","type":"authors"},{"authors":["marcel-reboucas"],"categories":null,"content":"","date":1456790400,"expirydate":-62135596800,"kind":"term","lang":"en","lastmod":1456790400,"objectID":"3c059edd78d2f4bee171e29e4db71833","permalink":"https://felipeebert.github.io/author/marcel-reboucas/","publishdate":"0001-01-01T00:00:00Z","relpermalink":"/author/marcel-reboucas/","section":"authors","summary":"","tags":null,"title":"Marcel Rebouças","type":"authors"},{"authors":["weslley-torres"],"categories":null,"content":"","date":1456790400,"expirydate":-62135596800,"kind":"term","lang":"en","lastmod":1456790400,"objectID":"9960c94eaa461dd0ae003ca110faba0a","permalink":"https://felipeebert.github.io/author/weslley-torres/","publishdate":"0001-01-01T00:00:00Z","relpermalink":"/author/weslley-torres/","section":"authors","summary":"","tags":null,"title":"Weslley Torres","type":"authors"},{"authors":["irineu-moura"],"categories":null,"content":"","date":1430438400,"expirydate":-62135596800,"kind":"term","lang":"en","lastmod":1430438400,"objectID":"2995ac24453c6a58fc28b34ca9182391","permalink":"https://felipeebert.github.io/author/irineu-moura/","publishdate":"0001-01-01T00:00:00Z","relpermalink":"/author/irineu-moura/","section":"authors","summary":"","tags":null,"title":"Irineu Moura","type":"authors"},{"authors":["Hamid Mohayeji Nasrabadi","Felipe Ebert","Eric Arts","Eleni Constantinou","Alexander Serebrenik"],"categories":null,"content":"","date":1645747200,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1645747200,"objectID":"b178842e9845f8f031d4c575d493035f","permalink":"https://felipeebert.github.io/publication/hamid-botse-2022/","publishdate":"2022-02-25T16:22:26.452321Z","relpermalink":"/publication/hamid-botse-2022/","section":"publication","summary":"Bots support different software maintenance and evolution activities, such as code review or executing tests. Recently, several bots have been proposed to help developers to keep track of postponed activities, expressed by means of TODO comments: e.g., TODO Bot automatically creates a GITHuB issue when a TODO comment is added to a repository, increasing visibility of TODO comments. In this work, we perform a preliminary evaluation of the impact of the TODO Bot on software development practice. We conjecture that the introduction of the TODO Bot would facilitate keeping track of the TODO comments, and hence encourage developers to use more TODO comments in their code changes. To evaluate this conjecture, we analyze all the 2,208 repositories which have at least one GITHuB issue created by the TODO Bot. Firstly, we investigate to what extent the bot is being used and describe the repositories using the bot. We observe that the majority (54%) of the repositories which adopted the TODO Bot are new, i.e., were created within less than one month of first issue created by the bot, and from those, more than 60% have the issue created within three days. We observe a statistically significant increase in the number of the TODO comments after the adoption of the bot, however with a small effect size. Our results suggest that the adoption of the TODO Bot encourages developers to introduce TODO comments rendering the postponed decisions more visible. Nevertheless, it does not speed up the process of addressing TODO comments or corresponding GITHuB issues.","tags":null,"title":"On the Adoption of a TODO Bot on GitHub: A Preliminary Study","type":"publication"},{"authors":["Felipe Ebert","Alexander Serebrenik","Christoph Treude","Nicole Novielli","Fernando Castor"],"categories":null,"content":"","date":1645056000,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1645056000,"objectID":"20c4021db2cc453f5c8cfb6ff1592f23","permalink":"https://felipeebert.github.io/publication/ebert-ropes-2022/","publishdate":"2022-02-21T09:51:01.788548Z","relpermalink":"/publication/ebert-ropes-2022/","section":"publication","summary":"Software engineering researchers have been using general purpose online tools for crowd-sourcing for quite some time. Those tools can be useful to recruit participants for research studies as they are paid for their time. However, those tools should be used carefully. In this paper, we have described the issues we faced when recruiting participants on Prolific. We used Prolific to recruit open-source developers with experience in submitting and reviewing pull requests (PRs). However, we did not succeed in obtaining valid participants for either the interview or the survey, which led us to change the approach of our study and not use Prolific anymore. For example, a major issue we faced on Prolific was that even using the specific filter related to participants with software development knowledge, the screening study revealed the majority of them did not have any development knowledge. Based on this experience, we formulate recommendations for future research when using such crowd-sourcing tools.","tags":null,"title":"On Recruiting Experienced GitHub Contributors for Interviews and Surveys on Prolific","type":"publication"},{"authors":["Giuseppe Cascavilla","Gemma Catolino","Felipe Ebert","Damian A. Tamburri","Willem-Jan van den Heuvel"],"categories":null,"content":"","date":1640995200,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1640995200,"objectID":"27ad81e512865b2f59228a88754baf80","permalink":"https://felipeebert.github.io/publication/cascavilla-icsme-2022/","publishdate":"2022-08-01T08:54:47.888239Z","relpermalink":"/publication/cascavilla-icsme-2022/","section":"publication","summary":"The increasing growth of illegal online activities in the so-called dark web—that is, the hidden collective of internet sites only accessible by a specialized web browsers—has challenged law enforcement agencies in recent years with sparse research efforts to help. For example, research has been devoted to supporting law enforcement by employing Natural Language Processing (NLP) to detect illegal activities on the dark web and build models for their classification. However, current approaches strongly rely upon the linguistic characteristics used to train the models, e.g., language semantics, which threatens their generalizability. To overcome this limitation, we tackle the problem of predicting illegal and criminal activities—a process defined as threat intelligence—on the dark web from a complementary perspective—that of dark web code maintenance and evolution— and propose a novel approach that uses software quality metrics and dark website appearance parameters instead of linguistic characteristics. We performed a preliminary empirical study on 10.367 web pages and collected more than 40 code metrics and website parameters using Sonarqube. Results show an accuracy of up to 82% for predicting the three types of illegal activities (i.e., suspicious, normal, and unknown) and 66% for detecting 26 specific illegal activities, such as drugs or weapons trafficking. We deem our results can influence the current trends in detecting illegal activities on the dark web and put forward a completely novel research avenue toward dealing with this problem from a software maintenance and evolution perspective.","tags":["Software Code metrics","Dark Web","Software Code Quality","Machine Learning"],"title":"\"When the Code becomes a Crime Scene\" Towards Dark Web Threat Intelligence with Software Quality Metrics","type":"publication"},{"authors":["Victoria Bogachenkova","Linh Nguyen","Felipe Ebert","Fernando Castor","Alexander Serebrenik"],"categories":null,"content":"","date":1640995200,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1640995200,"objectID":"58ddb27314fbb58d43adacba2c5403c1","permalink":"https://felipeebert.github.io/publication/bogachenkova-icsme-2022/","publishdate":"2022-08-01T08:44:29.58609Z","relpermalink":"/publication/bogachenkova-icsme-2022/","section":"publication","summary":"Code review is a popular software engineering practice. Success of code reviews can be threatened by confusion experienced by code reviewers. For instance, on the one hand, research has studied the reasons for confusion in code reviews, and on the other hand, it also has analyzed source code patterns, so called “atoms of confusion”, that have been shown to lead to misunderstanding in the lab setting. However, to the best of our knowledge, there is no research which tried to investigate the possible cause and effect relationship between atoms of confusion and confusion in code reviews. Another important aspect still not studied is how those atoms of confusion evolve across pull requests. In this emerging results paper, we report an exploratory case study to provide a deeper understanding of atoms of confusion, more specifically, whether atoms of confusion are related to confusion in code reviews and how they persist across pull requests. With the help of an existing tool for the detection of atoms of confusion, and a manual analysis of code reviews comments, we observed that statistical analysis did not show any relationship between atoms of confusion and presence of confusion comments in code reviews. Additionally, we found evidence that atoms of confusion are mostly not being removed in pull requests. Based on the results, we formulate hypotheses on atoms of confusion in the code review context, that should be confirmed or rejected by future studies.","tags":["Atoms of confusion","Confusion","Code reviews","Pull requests"],"title":"Evaluating Atoms of Confusion in the Context of Code Reviews","type":"publication"},{"authors":["G. Porto","Rodrigo Andrade","Felipe Ebert"],"categories":null,"content":"","date":1630454400,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1630454400,"objectID":"a379e605d1db9801a4563f2394f4af63","permalink":"https://felipeebert.github.io/publication/gabrielle-sbcars-2021/","publishdate":"2021-08-24T09:12:17.92489Z","relpermalink":"/publication/gabrielle-sbcars-2021/","section":"publication","summary":"Information Flow Control (IFC) tools are a common way to analyze source code with the goal to find confidentiality or integrity violations for sensitive information. Therefore, to correctly protect such information (e.g., passwords), it is important to choose the most suitable tool for each target software system. In this context, we evaluate precision, recall, and accuracy for three open-source IFC tools for Java written systems. We also check whether these tools are useful to protect sensitive information of real systems. First, we execute these tools against test cases of the SecuriBench Micro benchmark built for this purpose. Then, we run three selected IFC tools (JOANA, PIDGIN, and Flowdroid) to assess whether they are able to detect violations for rules we define considering each real system. Our results show that JOANA and PIDGIN overcome FlowDroid regarding precision, recall, and accuracy. Furthermore, the execution of JOANA and PIDGIN allow us to find eight confidentiality and integrity violations for the target systems. We registered these violations as issues on those projects. Our results also demonstrate that JOANA is faster than PIDGIN. At last, we provide some discussion for developers on which IFC tool fits better when dealing with sensitive information in software systems.","tags":["information-flow control","sensitive information","confidentiality","integrity"],"title":"A Comparative Analysis Between Information Flow Control Tools for Java-written systems","type":"publication"},{"authors":["Felipe Ebert","Fernando Castor","Nicole Novielli","Alexander Serebrenik"],"categories":null,"content":"","date":1609459200,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1609459200,"objectID":"f308f744d08f386a075599768264958a","permalink":"https://felipeebert.github.io/publication/ebert-emse-2021/","publishdate":"2021-01-28T09:15:59.725679Z","relpermalink":"/publication/ebert-emse-2021/","section":"publication","summary":"Context: Code review is a widely used technique of systematic examination of code changes which aims at increasing software quality. Code reviews provide several benefits for the project, including finding bugs, knowledge transfer, and assurance of adherence to project guidelines and coding style. However, code reviews have a major cost: they can delay the merge of the code change, and thus, impact the overall development process. This cost can be even higher if developers do not understand something, i.e., when developers face confusion during the code review. Objective: This paper studies the phenomenon of confusion in code reviews. Understanding confusion is an important starting point to help reducing the cost of code reviews and enhance the effectiveness of this practice, and hence, improve the development process. Method: We conducted two complementary studies. The first one aimed at identifying the reasons for confusion in code reviews, its impacts, and the coping strategies developers use to deal with it. Then, we surveyed developers to identify the most frequently experienced reasons for confusion, and conducted a systematic mapping study of solutions proposed for those reasons in the scientific literature. Results: From the first study, we build a framework with 30 reasons for confusion, 14 impacts, and 13 coping strategies. The results of the systematic mapping study shows 38 articles addressing the most frequent reasons for confusion. From those articles, we found 19 different solutions for confusion proposed in the literature, and nine impacts were established related to the most frequent reasons for confusion. Conclusions: Based on the solutions identified in the mapping study, or the lack of them, we propose an actionable guideline for developers on how to cope with confusion during code reviews; we also make several suggestions how tool builders can support code reviews. Additionally, we propose a research agenda for researchers studying code reviews.","tags":["Code reviews","Confusion","Card sorting","Survey","Systematic mapping study"],"title":"An Exploratory Study on Confusion in Code Reviews","type":"publication"},{"authors":["Felipe Ebert"],"categories":null,"content":"","date":1598918400,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1598918400,"objectID":"064c7aff8ff7581653767b030f06355b","permalink":"https://felipeebert.github.io/publication/ebert-icsme-2020/","publishdate":"2020-10-09T09:34:38.546491Z","relpermalink":"/publication/ebert-icsme-2020/","section":"publication","summary":"Developers usually need to use different kinds of tools in the software development process, e.g., version control systems, code review tools, and bug or issue tracking systems. Some of those tools provide an enhanced approach for developers to communicate, i.e., discussions are recorded in the communication feature of those tools. There is important information, i.e., discussions and decisions, registered by those tools which are not propagated to the project documentation: the transient information. Thus, this work investigates how to improve the software documentation by making such transient important information into persistent documentation as source code comments. The results are relevant because they will aid the comprehension of the source code not only during the development process, but also in code reviews.","tags":["confusion","transient information","software documentation","development process"],"title":"From Transient Information to Persistent Documentation: Enhancing Software Documentation","type":"publication"},{"authors":["Felipe Ebert","Fernando Castor","Alexander Serebrenik"],"categories":null,"content":"","date":1580515200,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1580515200,"objectID":"119c673f2205e631d212ed2e3a50ae76","permalink":"https://felipeebert.github.io/publication/ebert-saner-2020/","publishdate":"2020-10-09T09:34:38.586541Z","relpermalink":"/publication/ebert-saner-2020/","section":"publication","summary":"Exception handling is a feature provided by most mainstream programming languages, and typically involves constructs to throw and handle error signals. On the one hand, early work has argued extensively about the benefits of exception handling, such as promoting modularity by defining how exception handlers can be implemented and maintained independently of the normal behavior of the system and easing but localization. On the other hand, some studies argue that exception handling can make the programming languages unnecessarily complex and promote the introduction of subtle bugs in programs. In 2015 we published a paper describing a study investigating the prevalence and nature of exception handling bugs in two large, widely adopted Java systems. This study also confronted its findings about real exception handling bugs with the perceptions of developers about those bugs, also accounting for bugs not related to exception handling. The goal of this reflection paper is to investigate the state of the art in exception handling research, with a particular emphasis on exception handling bugs, and how our paper has influenced other studies in the area. We found that our paper was cited by 33 articles, and all themes for future work we raised in our paper have been tackled by other studies in the short span of five years.","tags":["exception handling","bugs","reflection study"],"title":"A Reflection on \"An Exploratory Study on Exception Handling Bugs in Java Programs\"","type":"publication"},{"authors":["Victor Oliveira","Leopoldo Teixeira","Felipe Ebert"],"categories":null,"content":"","date":1580515200,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1580515200,"objectID":"f7b1f0c5821546e980e2e6fb2ab6576b","permalink":"https://felipeebert.github.io/publication/oliveira-saner-2020/","publishdate":"2020-10-09T09:34:38.588534Z","relpermalink":"/publication/oliveira-saner-2020/","section":"publication","summary":"In 2017, Google announced Kotlin as one of the officially supported languages for Android development. Among the reasons for choosing Kotlin, Google mentioned it is “concise, expressive, and designed to be type and null-safe”. Another important reason is that Kotlin is a language fully interoperable with Java and runs on the JVM. Despite Kotlin's rapid rise in the industry, very little has been done in academia to understand how developers are dealing with the adoption of Kotlin. The goal of this study is to understand how developers are dealing with the recent adoption of Kotlin as an official language for Android development, their perception about the advantages and disadvantages related to its usage, and the most common problems faced by them. This research was conducted using the concurrent triangulation strategy, which is a mixed-method approach. We performed a thorough analysis of 9,405 questions related to Kotlin development for the Android platform on Stack Overflow. Concurrently, we also conducted a basic qualitative research interviewing seven Android developers that use Kotlin to confirm and cross-validate our findings. Our study reveals that developers do seem to find the language easy to understand and to adopt it. This perception begins to change when the functional paradigm becomes more evident. Accordingly to the developers, the readability and legibility are compromised if developers overuse the functional flexibility that the language provides. The developers also consider that Kotlin increases the quality of the produced code mainly due to its null-safety guarantees, but it can also become a challenge when interoperating with Java, despite the interoperability being considered as an advantage. While adopting Kotlin requires some care from developers, its benefits seem to bring many advantages to the platform according to the developers, especially in the aspect of adopting a more modern language while maintaining the consolidated Java-based development environment.","tags":["Android","Kotlin","Java"],"title":"On the Adoption of Kotlin on Android Development: A Triangulation Study","type":"publication"},{"authors":[],"categories":[],"content":"Elected the best PhD thesis of 2019 at CIn/UFPE!\nI also presented my thesis in the 3 Minute Thesis format in Portuguese on YouTube: ","date":1550188800,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1550188800,"objectID":"868d848934b6760d6ab9c7261fd58b70","permalink":"https://felipeebert.github.io/post/phd-2019/","publishdate":"2019-02-15T00:00:00Z","relpermalink":"/post/phd-2019/","section":"post","summary":"PhD in Computer Science / 2014 - 2019","tags":["confusion","code reviews"],"title":"Understanding Confusion in Code Reviews","type":"post"},{"authors":["Felipe Ebert","Fernando Castor","Nicole Novielli","Alexander Serebrenik"],"categories":null,"content":"","date":1548979200,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1548979200,"objectID":"6bec6dde5492d56f862042d906efa3a8","permalink":"https://felipeebert.github.io/publication/ebert-saner-2019/","publishdate":"2020-10-09T09:34:38.552589Z","relpermalink":"/publication/ebert-saner-2019/","section":"publication","summary":"Code review is a software quality assurance practice widely employed in both open source and commercial software projects to detect defects, transfer knowledge and encourage adherence to coding standards. Notwithstanding, code reviews can also delay the incorporation of a code change into a code base, thus slowing down the overall development process. Part of this delay is often a consequence of reviewers not understanding, becoming confused by, or being uncertain about the intention, behavior, or effect of a code change.We investigate the reasons and impacts of confusion in code reviews, as well as the strategies developers adopt to cope with confusion. We employ a concurrent triangulation strategy to combine the analyses of survey responses and of the code review comments, and build a comprehensive confusion framework structured along the dimensions of the review process, the artifact being reviewed, the developers themselves and the relation between the developer and the artifact. The most frequent reasons for confusion are the missing rationale, discussion of non-functional requirements of the solution, and lack of familiarity with existing code. Developers report that confusion delays the merge decision, decreases review quality, and results in additional discussions. To cope with confusion developers request information, improve familiarity with existing code, and discuss off-line. Based on the results, we provide a series of implications for tool builders, as well as insights and suggestions for researchers. The results of our work offer empirical justification for the need to improve code review tools to support developers facing confusion.","tags":["code review","confusion","survey","card sorting"],"title":"Confusion in Code Reviews: Reasons, Impacts, and Coping Strategies","type":"publication"},{"authors":["Felipe Ebert","Fernando Castor","Nicole Novielli","Alexander Serebrenik"],"categories":null,"content":"","date":1535760000,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1535760000,"objectID":"6a09381349dbc9b1780f834b2615a787","permalink":"https://felipeebert.github.io/publication/ebert-icsme-2018/","publishdate":"2020-10-09T09:34:38.561549Z","relpermalink":"/publication/ebert-icsme-2018/","section":"publication","summary":"During code review, developers request clarifications, suggest improvements, or ask for explanations about the rationale behind the implementation choices. We envision the emergence of tools to support developers during code review based on the automatic analysis of the argumentation structure and communicative intentions conveyed by developers' comments. As a preliminary step towards this goal, we conducted an exploratory case study by manually classifying 499 questions extracted from 399 Android code reviews to understand the real communicative intentions they convey. We observed that the majority of questions actually serve information seeking goals. Still, they represent less than half of the annotated sample, with other questions being used to serve a wider variety of developers' communication goals, including suggestions, request for action, and criticism. Based on our findings we formulate hypotheses on communicative intentions in code reviews that should be confirmed or rejected by follow-up studies.","tags":["questions","communicative intention","code reviews","exploratory case study","Android"],"title":"Communicative Intention in Code Review Questions","type":"publication"},{"authors":[],"categories":null,"content":"","date":1535500800,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1535500800,"objectID":"c2f12a74d126cac4e16c29ce279e01cb","permalink":"https://felipeebert.github.io/talk/ictt-2018/","publishdate":"2018-08-29T00:00:00Z","relpermalink":"/talk/ictt-2018/","section":"talk","summary":"","tags":["CITT","confusion","code reviews"],"title":"Keynote: Understanding Confusion in Code Reviews","type":"talk"},{"authors":[],"categories":null,"content":"","date":1511827200,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1511827200,"objectID":"e9cb492269613c733ed4791550144379","permalink":"https://felipeebert.github.io/talk/crest-2017/","publishdate":"2017-11-28T00:00:00Z","relpermalink":"/talk/crest-2017/","section":"talk","summary":"","tags":["COW","CREST Open Workshop","confusion","code reviews"],"title":"Confusion Detection in Code Reviews","type":"talk"},{"authors":["Felipe Ebert","Fernando Castor","Nicole Novielli","Alexander Serebrenik"],"categories":null,"content":"","date":1504224000,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1504224000,"objectID":"01661b3d4d2b8b6a64434d9ef72b5466","permalink":"https://felipeebert.github.io/publication/ebert-icsme-2017/","publishdate":"2020-10-09T09:34:38.566537Z","relpermalink":"/publication/ebert-icsme-2017/","section":"publication","summary":"Code reviews are an important mechanism for assuring quality of source code changes. Reviewers can either add general comments pertaining to the entire change or pinpoint concerns or shortcomings about a specific part of the change using inline comments. Recent studies show that reviewers often do not understand the change being reviewed and its context.Our ultimate goal is to identify the factors that confuse code reviewers and understand how confusion impacts the efficiency and effectiveness of code review(er)s. As the first step towards this goal we focus on the identification of confusion in developers' comments. Based on an existing theoretical framework categorizing expressions of confusion, we manually classify 800 comments from code reviews of the Android project. We observe that confusion can be reasonably well-identified by humans: raters achieve moderate agreement (Fleiss' kappa 0.59 for the general comments and 0.49 for the inline ones). Then, for each kind of comment we build a series of automatic classifiers that, depending on the goals of the further analysis, can be trained to achieve high precision (0.875 for the general comments and 0.615 for the inline ones), high recall (0.944 for the general comments and 0.988 for the inline ones), or substantial precision and recall (0.696 and 0.542 for the general comments and 0.434 and 0.583 for the inline ones, respectively). These results motivate further research on the impact of confusion on the code review process. Moreover, other researchers can employ the proposed classifiers to analyze confusion in other contexts where software development-related discussions occur, such as mailing lists.","tags":["code review","confusion","machine learning"],"title":"Confusion Detection in Code Reviews","type":"publication"},{"authors":[],"categories":null,"content":"","date":1491955200,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1491955200,"objectID":"7bbb6c67ff9b3b5e32e7574a0fba36ec","permalink":"https://felipeebert.github.io/talk/benevol-2017/","publishdate":"2017-04-12T00:00:00Z","relpermalink":"/talk/benevol-2017/","section":"talk","summary":"","tags":["BENEVOL","confusion","code reviews"],"title":"Confusion Detection in Code Reviews","type":"talk"},{"authors":["Marcel Rebouças","Gustavo Pinto","Felipe Ebert","Weslley Torres","Alexander Serebrenik","Fernando Castor"],"categories":null,"content":"","date":1456790400,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1456790400,"objectID":"454db21a4baac05aca33396e08676783","permalink":"https://felipeebert.github.io/publication/reboucas-saner-2016/","publishdate":"2020-10-09T09:34:38.571583Z","relpermalink":"/publication/reboucas-saner-2016/","section":"publication","summary":"Recently, Apple released Swift, a modern programming language built to be the successor of Objective-C. In less than a year and a half after its first release, Swift became one of the most popular programming languages in the world, considering different popularity measures. A significant part of this success is due to Apple's strict control over its ecosystem, and the clear message that it will replace Objective-C in a near future. According to Apple, \"Swift is a powerful and intuitive programming language[...]. Writing Swift code is interactive and fun, the syntax is concise yet expressive.\" However, little is known about how Swift developers perceive these benefits. In this paper, we conducted two studies aimed at uncovering the questions and strains that arise from this early adoption. First, we perform a thorough analysis on 59,156 questions asked about Swift on StackOverflow. Second, we interviewed 12 Swift developers to cross-validate the initial results. Our study reveals that developers do seem to find the language easy to understand and adopt, although 17.5% of the questions are about basic elements of the language. Still, there are many questions about problems in the toolset (compiler, Xcode, libraries). Some of our interviewees reinforced these problems.","tags":null,"title":"An Empirical Study on the Usage of the Swift Programming Language","type":"publication"},{"authors":["Felipe Ebert","Fernando Castor","Alexander Serebrenik"],"categories":null,"content":"","date":1438387200,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1438387200,"objectID":"1189bec7a221fbe504e403bab6fa087a","permalink":"https://felipeebert.github.io/publication/ebert-jss-2015/","publishdate":"2020-10-09T09:34:38.575614Z","relpermalink":"/publication/ebert-jss-2015/","section":"publication","summary":"Most mainstream programming languages provide constructs to throw and to handle exceptions. However, several studies argue that exception handling code is usually of poor quality and that it is commonly neglected by developers. Moreover, it is said to be the least understood, documented, and tested part of the implementation of a system. Nevertheless, there are very few studies that analyze the actual exception handling bugs that occur in real software systems or that attempt to understand developers' perceptions of these bugs. In this work we present an exploratory study on exception handling bugs that employs two complementary approaches: a survey of 154 developers and an analysis of 220 exception handling bugs from the repositories of Eclipse and Tomcat.\nOnly 27% of the respondents claimed that policies and standards for the implementation of error handling are part of the culture of their organizations. Moreover, in 70% of the organizations there are no specific tests for the exception handling code. Also, 61% of the respondents stated that *no* to *little* importance is given to the documentation of exception handling in the design phase of the projects with which they are involved. In addition, about 40% of the respondents consider the quality of exception handling code to be either *good* or *very good* and only 14% of the respondents consider it to be *bad* or *very bad*. Furthermore, the repository analysis has shown (with statistical significance) that exception handling bugs are ignored by developers less often than other bugs. We have also observed that while overly general *catch* blocks are a well-known bad smell related to exceptions, bugs stemming from these *catch* blocks are rare, even though many overly general *catch* blocks occur in the code. Furthermore, while developers often mention empty *catch* blocks as causes of bugs they have fixed in the past, we found very few bug reports caused by them. On top of that, empty *catch* blocks are frequently used as part of bug fixes, including fixes for exception handling bugs.\nBased on our findings, we propose a classification of exception handling bugs and their causes. The proposed classification can be used to assist in the design and implementation of test suites, to guide code inspections, or as a basis for static analysis tools.","tags":["Bugs","Exception handling","Repository mining"],"title":"An Exploratory Study on Exception Handling Bugs in Java Programs","type":"publication"},{"authors":["Irineu Moura","Gustavo Pinto","Felipe Ebert","Fernando Castor"],"categories":null,"content":"","date":1430438400,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1430438400,"objectID":"eb3d247eeffd061594e349aa3f03e324","permalink":"https://felipeebert.github.io/publication/moura-msr-2013/","publishdate":"2020-10-09T09:34:38.579619Z","relpermalink":"/publication/moura-msr-2013/","section":"publication","summary":"Over the last years, energy consumption has become a first-class citizen in software development practice. While energy-efficient solutions on lower-level layers of the software stack are well-established, there is convincing evidence that even better results can be achieved by encouraging practitioners to participate in the process. For instance, previous work has shown that using a newer version of a concurrent data structure can yield a 2.19x energy savings when compared to the old associative implementation [75]. Nonetheless, little is known about how much software engineers are employing energy-efficient solutions in their applications and what solutions they employ for improving energy-efficiency. In this paper we present a qualitative study of \"energy-aware commits\". Using Github as our primary data source, we perform a thorough analysis on an initial sample of 2,189 commits and carefully curate a set of 371 energy-aware commits spread over 317 real-world non-trivial applications. Our study reveals that software developers heavily rely on low-level energy management approaches, such as frequency scaling and multiple levels of idleness. Also, our findings suggest that ill-chosen energy saving techniques can impact the correctness of an application. Yet, we found what we call \"energy-aware interfaces\", which are means for clients (e.g., Developers or end-users) to save energy in their applications just by using a function, abstracting away the low-level implementation details.","tags":null,"title":"Mining Energy-Aware Commits","type":"publication"},{"authors":["Felipe Ebert","Fernando Castor"],"categories":null,"content":"","date":1377993600,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1377993600,"objectID":"9bd3fa86b082bc8ae28d20f46d6df5cf","permalink":"https://felipeebert.github.io/publication/ebert-icsm-2013/","publishdate":"2020-10-09T09:34:38.583574Z","relpermalink":"/publication/ebert-icsm-2013/","section":"publication","summary":"Several studies argue that exception handling code usually has poor quality and that it is commonly neglected by developers. Moreover, it is said to be the least understood, documented, and tested part of the implementation of a system. However, there are very few studies that attempt to understand developers' perceptions about exception handling, in general, and exception handling bugs, in particular. In this paper, we present the results of a survey conducted with 154 developers that aims to fill in this gap. According to the respondents of the survey, exception handling code is in fact documented and tested infrequently. Also, many of the respondents have had to fix exception handling bugs, in particular those caused by empty catch blocks or exceptions caught unintentionally. The respondents believe that exception handling bugs are more easily fixed than other kinds of bugs. Also, we found out a significant difference in the opinion of the respondents pertaining to the quality of the exception handling code: more experienced developers tend to believe that it is worse. We present a comprehensive classification of exception handling bugs based on the study results.","tags":["exception handling","bugs","survey"],"title":"A Study on Developers' Perceptions about Exception Handling Bugs","type":"publication"},{"authors":[],"categories":[],"content":"","date":1375401600,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1375401600,"objectID":"6a025ad0aa322257fed2ad42d1a1bb8d","permalink":"https://felipeebert.github.io/post/master-2013/","publishdate":"2013-08-02T00:00:00Z","relpermalink":"/post/master-2013/","section":"post","summary":"Master in Computer Science / 2011 - 2013","tags":["exception handling","bugs","eh-bugs"],"title":"An Exploratory Study on Exception Handling Bugs","type":"post"},{"authors":null,"categories":null,"content":"Organizing Committee Member: The 2022 Mining Software Repositories Conference - MSR: hybridization co-chair 1st Workshop on Automated Support to Improve code Readability - AeSIR (Collocated with ASE 2021): co-chair 9th Workshop on Software Visualization, Evolution and Maintenance - VEM (Collocated with CBSoft 2021): co-chair Journal Reviews: Empirical Software Engineering (EMSE) Transactions on Software Engineering (TSE) Journal of Systems \u0026amp; Software (JSS) Software Engineering and Methodology (TOSEM) IEEE Software Science of Computer Programming (Original Software Publications) Institution of Engineering and Technology (IET) Software Program Committee Member: 2022: Mining Software Repositories Conference (MSR): Technical Track Shadow PC mentoring International Conference on Software Maintenance and Evolution (SANER): Technical Track International Conference on Program Comprehension (ICPC): Technical Track International Workshop on Recruiting Participants for Empirical Software Engineering (RoPES) International Conference on Software and Systems Processes (ICGSE) International Conference on the Quality of Information and Communications Technology (QUATIC) VII Workshop sobre Aspectos Sociais, Humanos e Econômicos de Software (WASHES) XXXVI Brazilian Symposium on Software Engineering (SBES): Insightful Ideas \u0026amp; Emerging Results Track 21st Belgium-Netherlands Software Evolution Workshop (BENEVOL 2022) 2021: International Conference on Software Maintenance and Evolution (ICSME): New Ideas and Emerging Results (NIER) Artifact Evaluation Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE): Artifact Evaluation Mining Software Repositories Conference (MSR): Technical Track Data Showcase Registered Reports International Conference on Automated Software Engineering (ASE): Late Breaking Results Artifact Evaluation 15th Brazilian Symposium on Software Components, Architectures, and Reuse (SBCARS) 2020: International Conference on Software Maintenance and Evolution (ICSME): Doctoral Symposium Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE): Student Research Competition Seminar Series On Advanced Techniques \u0026amp; Tools For Software Evolution (SATToSE) XIV Brazilian Symposium on Software Components, Architectures, and Reuse (SBCARS) - distinguished reviewer award! VIII Workshop on Software Visualization, Evolution and Maintenance (VEM) 2019: XXXIII Brazilian Symposium on Software Engineering (SBES): Insightful Ideas \u0026amp; Emerging Results Track XIII Brazilian Symposium on Software Components, Architectures, and Reuse (SBCARS) - distinguished reviewer award! VII Workshop on Software Visualization, Evolution and Maintenance (VEM) 2018: The 4th International Conference on Technology Trends (CITT'2018) 2017: The 3rd International Conference on Technology Trends (CITT'2017) Student Volunteer: Systems, Programming, Languages and Applications: Software for Humanity (SPLASH'2016) ","date":-62135596800,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":-62135596800,"objectID":"9e6868f6f4296ac87107633af27928f9","permalink":"https://felipeebert.github.io/services/","publishdate":"0001-01-01T00:00:00Z","relpermalink":"/services/","section":"","summary":"Organizing Committee Member: The 2022 Mining Software Repositories Conference - MSR: hybridization co-chair 1st Workshop on Automated Support to Improve code Readability - AeSIR (Collocated with ASE 2021): co-chair 9th Workshop on Software Visualization, Evolution and Maintenance - VEM (Collocated with CBSoft 2021): co-chair Journal Reviews: Empirical Software Engineering (EMSE) Transactions on Software Engineering (TSE) Journal of Systems \u0026amp; Software (JSS) Software Engineering and Methodology (TOSEM) IEEE Software Science of Computer Programming (Original Software Publications) Institution of Engineering and Technology (IET) Software Program Committee Member: 2022: Mining Software Repositories Conference (MSR): Technical Track Shadow PC mentoring International Conference on Software Maintenance and Evolution (SANER): Technical Track International Conference on Program Comprehension (ICPC): Technical Track International Workshop on Recruiting Participants for Empirical Software Engineering (RoPES) International Conference on Software and Systems Processes (ICGSE) International Conference on the Quality of Information and Communications Technology (QUATIC) VII Workshop sobre Aspectos Sociais, Humanos e Econômicos de Software (WASHES) XXXVI Brazilian Symposium on Software Engineering (SBES): Insightful Ideas \u0026amp; Emerging Results Track 21st Belgium-Netherlands Software Evolution Workshop (BENEVOL 2022) 2021: International Conference on Software Maintenance and Evolution (ICSME): New Ideas and Emerging Results (NIER) Artifact Evaluation Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE): Artifact Evaluation Mining Software Repositories Conference (MSR): Technical Track Data Showcase Registered Reports International Conference on Automated Software Engineering (ASE): Late Breaking Results Artifact Evaluation 15th Brazilian Symposium on Software Components, Architectures, and Reuse (SBCARS) 2020: International Conference on Software Maintenance and Evolution (ICSME): Doctoral Symposium Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE): Student Research Competition Seminar Series On Advanced Techniques \u0026amp; Tools For Software Evolution (SATToSE) XIV Brazilian Symposium on Software Components, Architectures, and Reuse (SBCARS) - distinguished reviewer award!","tags":null,"title":"Community Services","type":"page"}]