David Pritchard: "Frequency Distribution of Error Messages". PLATEAU'15, October 2015, http://2015.splashcon.org/event/plateau2015-frequency-distribution-of-error-messages.
Which programming error messages are the most common? We investigate this question, motivated by writing error explanations for novices. We consider large data sets in Python and Java that include both syntax and run-time errors. In both data sets, after grouping essentially identical messages, the error message frequencies empirically resemble Zipf-Mandelbrot distributions. We use a maximum-likelihood approach to fit the distribution parameters. This gives one possible way to contrast languages or compilers quantitatively.
Based on a large corpus of error messages, the 5 most common errors in Python programs are:
|179624||SyntaxError: invalid syntax|
|97186||NameError: name ’NAME’ is not defined|
|76026||EOFError: EOF when reading a line|
|26097||SyntaxError: unexpected EOF while parsing|
|20758||IndentationError: unindent does not match any outer indentation level|
and the 5 most common in Java are:
|702102||cannot find symbol - variable NAME|
|280874||cannot find symbol - method NAME|
|197213||cannot find symbol - class NAME|
What's more, their frequency has a power law (or "long tail") distribution, which suggests that improving reporting for just a handful of errors would have a disproportionate effect on usability. But my favorite part of this paper comes toward the end of Section 3.2:
Can this [relationship] be plausible: is the total number of possible errors infinite? We will accept this as a reasonable hypothesis...
to which I can only say, "Amen."
Originally posted at Never Work in Theory.