iFeedback: Exploiting User Feedback for RealTime Issue Detection in LargeScale Online Service Systems Largescale online systems are complex, fastevolving, and hardly bugfree despite the testing efforts. Backend system monitoring cannot detect many types of issues, such as UI related bugs, bugs with small impact on backend system indicators, or errors from thirdparty cooperating systems, etc. However, users are good informers of such issues: They will provide their feedback for any types of issues. This experience paper discusses our design of iFeedback, a tool to perform realtime issue detection based on user feedback texts. Unlike traditional approaches that analyze user feedback with computationintensive natural language processing algorithms, iFeedback is focusing on fast issue detection, which can serve as a system lifecondition monitor. In particular, iFeedback extracts word combinationbased indicators from feedback texts. This allows iFeedback to perform fast system anomaly detection with sophisticated machine learning algorithms. iFeedback then further summarizes the texts with an aim to effectively present the anomaly to the developers for root cause analysis. We present our representative experiences in successfully applying iFeedback in tens of largescale production online service systems in ten months.

Getafix: Learning to fix bugs automatically Static analyzers help find bugs early by warning about recurring bug categories. While fixing these bugs still remains a mostly manual task in practice, we observe that fixes for a specific bug category often are repetitive. This paper addresses the problem of automatically fixing instances of common bugs by learning from past fixes. We present Getafix, an approach that produces humanlike fixes while being fast enough to suggest fixes in time proportional to the amount of time needed to obtain static analysis results in the first place. Getafix is based on a novel hierarchical clustering algorithm that summarizes fix patterns into a hierarchy ranging from general to specific patterns. Instead of a computationally expensive exploration of a potentially large space of candidate fixes, Getafix uses a simple yet effective ranking technique that uses the context of a code change to select the most appropriate fix for a given bug. Our evaluation applies Getafix to 1,268 bug fixes for six bug categories reported by popular static analyzers for Java, including null dereferences, incorrect API calls, and misuses of particular language constructs. The approach predicts exactly the humanwritten fix as the topmost suggestion between 12% and 91% of the time, depending on the bug category. The top5 suggestions contain fixes for 526 of the 1,268 bugs. Moreover, we report on deploying the approach within Facebook, where it contributes to the reliability of software used by billions of people. To the best of our knowledge, Getafix is the first industriallydeployed automated bugfixing tool that learns fix patterns from past, humanwritten fixes to produce humanlike fixes.