NoFAQ: synthesizing command repairs from examples

Loris D'Antoni, Rishabh Singh, Michael Vaughn
2017 Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering - ESEC/FSE 2017  
Command-line tools are confusing and hard to use 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 NoFAQ, a tool that uses a set of rules to suggest possible fixes when users write buggy commands that trigger commonly
more » ... gger commonly occurring errors. The rules are expressed in a language called Fixit and each rule pattern-matches against the user's buggy command and corresponding error message, and uses these inputs to produce a possible fixed command. NoFAQ automatically learns Fixit rules from examples of buggy and repaired commands. We evaluate NoFAQ on two fronts. First, we use 92 benchmark problems drawn from an existing tool and show that NoFAQ is able to synthesize rules for 81 benchmark problems in real time using just 2 to 5 input-output examples for each rule. Second, we run our learning algorithm on the examples obtained through a crowd-sourcing interface and show that the learning algorithm scales to large sets of examples. CCS CONCEPTS • Software and its engineering → Command and control languages; Programming by example;
doi:10.1145/3106237.3106241 dblp:conf/sigsoft/DAntoniSV17 fatcat:5otth6eu6rglbawol7nnunkz54