Technical Report: Towards a Universal Code Formatter through Machine
  Learning
  There are many declarative frameworks that allow us to implement code
formatters relatively easily for any specific language, but constructing them
is cumbersome. The first problem is that "everybody" wants to format their code
differently, leading to either many formatter variants or a ridiculous number
of configuration options. Second, the size of each implementation scales with a
language's grammar size, leading to hundreds of rules.
  In this paper, we solve the formatter construction problem using a novel
approach, one that automatically derives formatters for any given language
without intervention from a language expert. We introduce a code formatter
called CodeBuff that uses machine learning to abstract formatting rules from a
representative corpus, using a carefully designed feature set. Our experiments
on Java, SQL, and ANTLR grammars show that CodeBuff is efficient, has excellent
accuracy, and is grammar invariant for a given language. It also generalizes to
a 4th language tested during manuscript preparation.
