  Modern development environments provide a widely used auto-correction
facility for quickly repairing syntactic errors. Auto-correction cannot deal
with semantic errors, which are much more difficult to repair. Automated
program repair techniques, designed for repairing semantic errors, are not
well-suited for interactive use while debugging, as they typically assume the
existence of a high-quality test suite and take considerable time. To bridge
the gap, we developed ROSE, a tool to suggest quick-yet-effective repairs of
semantic errors during debugging. ROSE does not rely on a test suite. Instead,
it assumes a debugger stopping point where a problem is observed. It asks the
developer to quickly describe what is wrong, performs a light-weight fault
localization to identify potential responsible locations, and uses a
generate-and-validate strategy to produce and validate repairs. Finally, it
presents the results so the developer can choose and make the appropriate
repair. To assess its utility, we implemented a prototype of ROSE that works in
the Eclipse IDE and applied it to two benchmarks, QuixBugs and Defects4J, for
repair. ROSE was able to suggest correct repairs for 17 QuixBugs and 16
Defects4J errors in seconds.
