An Empirical Study of the Impact of Modern Code Review Practices on Software Quality

Authors - Shane McIntosh, Yasutaka Kamei, Bram Adams, Ahmed E. Hassan
Venue - Empirical Software Engineering, vol. 21, pp. 2146-2189, 2016

Related Tags - EMSE 2016 code review software quality

Abstract - Software code review, i.e., the practice of having other team members critique changes to a software system, is a well-established best practice in both open source and proprietary software domains. Prior work has shown that formal code inspections tend to improve the quality of delivered software. However, the formal code inspection process mandates strict review criteria (e.g., in-person meetings and reviewer checklists) to ensure a base level of review quality, while the modern, lightweight code reviewing process does not. Although recent work explores the modern code review process, little is known about the relationship between modern code review practices and long-term software quality. Hence, in this paper, we study the relationship between post-release defects (a popular proxy for long-term software quality) and: (1) code review coverage, i.e., the proportion of changes that have been code reviewed, (2) code review participation, i.e., the degree of reviewer involvement in the code review process, and (3) code reviewer expertise, i.e., the level of domain-specific expertise of the code reviewers. Through a case study of the Qt, VTK, and ITK projects, we find that code review coverage, participation, and expertise share a significant link with software quality. Hence, our results empirically confirm the intuition that poorly-reviewed code has a negative impact on software quality in large systems using modern reviewing tools.

Preprint - PDF

Bibtex

@article{mcintosh2016emse,
  Author = {Shane McIntosh and Yasutaka Kamei and Bram Adams and Ahmed E. Hassan},
  Title = {{An Empirical Study of the Impact of Modern Code Review Practices on Software Quality}},
  Year = {2016},
  Journal = {Empirical Software Engineering},
  Volume = {21},
  Number = {5},
  Pages = {2146-2189}
}