A deep understanding of the common patterns of bug-fixing changes is useful in several ways: (a) such knowledge can help developers in proactively avoiding coding patterns that lead to bugs and (b) bug-fixing patterns are exploited in devising techniques for automatic bug localization and program repair.
This work includes an in-depth quantitative and qualitative analysis over 4,653 buggy revisions of five software systems. Our study identifies 38 bug-fixing
edit
patterns and discovers 37 new patterns of nested code structures, which frequently host the bug-fixing edits. While some of the
edit
patterns were reported in earlier studies, these
nesting
patterns are
new
and were never targeted before.