  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. Our main contribution is an
algorithm based on lazy VSA for synthesizing FixIt rules from examples of buggy
and repaired commands. The algorithm allows users to add new rules in NoFAQ
without having to manually encode them. We present the evaluation of NoFAQ on
92 benchmark problems and show that NoFAQ is able to instantly synthesize rules
for 81 benchmark problems in real time using just 2 to 5 input-output examples
for each rule.
