Synthesizing Command Repairs From Examples

Monday, December 12, 2016 -
12:00pm to 1:00pm
4310CS

Speaker Name: 

Michael Vaughn

Cookies: 

No

Description: 

Command-line tools are confusing and hard to use for novice programmers due to their cryptic error messages and lack of documentation. Novice users often resort to online help-forums for finding corrections to their buggy commands, but have a hard time in searching precisely for posts that are relevant to their problem and then applying the suggested solutions to their buggy command.

We present a tool, NoFAQ, that uses a set of rules to suggest possible fixes when users write buggy commands that trigger commonly occurring errors. The rules are expressed in a language called FixIt and each rule pattern-matches against the user's buggy command and the corresponding error message, and uses these inputs to produce a possible fixed command. We demonstrate a polynomial-time algorithm for incorporating new examples into existing FixIt rules, without requiring users to manually encode rules, as in previous command line repair solutions. We will then discuss how NoFAQ and FixIt are used to construct a web application that crowdsources command repairs from thousands of users.