@inproceedings{ge_shepherd_damevski_murphy-hill_2014, title={How developers use multi-recommendation system in local code search}, DOI={10.1109/vlhcc.2014.6883025}, abstractNote={Developers often start programming tasks by searching for relevant code in their local codebase. Previous research suggests that 88% of manually-composed queries retrieve no relevant results. Many searches fail because existing search tools depend solely on string matching with a manually-composed query, which cannot find semantically-related code. To solve this problem, researchers proposed query recommendation techniques to help developers compose queries without the extensive knowledge of the codebase under search. However, few of these techniques are empirically evaluated by the usage data from real-world developers. To fill this gap, we studied several query recommendation techniques by extending Sando and conducting a longitudinal field study. Our study shows that over 30% of all queries were adopted from recommendation; and recommended queries retrieved results 7% more often than manual queries.}, booktitle={2014 ieee symposium on visual languages and human-centric computing (vl/hcc 2014)}, author={Ge, X. and Shepherd, D. and Damevski, K. and Murphy-Hill, E.}, year={2014}, pages={69–76} } @inproceedings{ge_shepherd_damevski_murphy-hill_2014, title={How the Sando search tool recommends queries}, DOI={10.1109/csmr-wcre.2014.6747210}, abstractNote={Developers spend a significant amount of time searching their local codebase. To help them search efficiently, researchers have proposed novel tools that apply state-of-the-art information retrieval algorithms to retrieve relevant code snippets from the local codebase. However, these tools still rely on the developer to craft an effective query, which requires that the developer is familiar with the terms contained in the related code snippets. Our empirical data from a state-of-the-art local code search tool, called Sando, suggests that developers are sometimes unacquainted with their local codebase. In order to bridge the gap between developers and their ever-increasing local codebase, in this paper we demonstrate the recommendation techniques integrated in Sando.}, booktitle={2014 Software Evolution Week - IEEE Conference on Software Maintenance, Reengineering, and Reverse Engineering (CSMR-WCRE)}, author={Ge, X. and Shepherd, D. and Damevski, K. and Murphy-Hill, E.}, year={2014}, pages={425–428} } @inproceedings{ge_dubose_murphy-hill_2012, title={Reconciling manual and automatic refactoring}, DOI={10.1109/icse.2012.6227192}, abstractNote={Although useful and widely available, refactoring tools are underused. One cause of this underuse is that a developer sometimes fails to recognize that she is going to refactor before she begins manually refactoring. To address this issue, we conducted a formative study of developers' manual refactoring process, suggesting that developers' reliance on “chasing error messages” when manually refactoring is an error-prone manual refactoring strategy. Additionally, our study distilled a set of manual refactoring workflow patterns. Using these patterns, we designed a novel refactoring tool called BeneFactor. BeneFactor detects a developer's manual refactoring, reminds her that automatic refactoring is available, and can complete her refactoring automatically. By alleviating the burden of recognizing manual refactoring, BeneFactor is designed to help solve the refactoring tool underuse problem.}, booktitle={2012 34th international conference on software engineering (icse)}, author={Ge, X. and DuBose, Q. L. and Murphy-Hill, E.}, year={2012}, pages={211–221} } @inproceedings{ge_taneja_xie_tillmann_2011, title={DyTa: Dynamic symbolic execution guided with static verification results}, DOI={10.1145/1985793.1985971}, abstractNote={Software-defect detection is an increasingly important research topic in software engineering. To detect defects in a program, static verification and dynamic test generation are two important proposed techniques. However, both of these techniques face their respective issues. Static verification produces false positives, and on the other hand, dynamic test generation is often time consuming. To address the limitations of static verification and dynamic test generation, we present an automated defect-detection tool, called DyTa, that combines both static verification and dynamic test generation. DyTa consists of a static phase and a dynamic phase. The static phase detects potential defects with a static checker; the dynamic phase generates test inputs through dynamic symbolic execution to confirm these potential defects. DyTa reduces the number of false positives compared to static verification and performs more efficiently compared to dynamic test generation.}, booktitle={2011 33rd International Conference on Software Engineering (ICSE)}, author={Ge, X. and Taneja, K. and Xie, T. and Tillmann, N.}, year={2011}, pages={992–994} }