Code Reviews with Divergent Review Scores: An Empirical Study of the OpenStack and Qt Communities

Authors - Toshiki Hirao, Shane McIntosh, Akinori Ihara, Kenichi Matsumoto
Venue - IEEE Transactions on Software Engineering, pp. To appear, 2020

Related Tags - TSE 2020 code review integration

Abstract - Code review is a broadly adopted software quality practice where developers critique each others’ patches. In addition to providing constructive feedback, reviewers may provide a score to indicate whether the patch should be integrated. Since reviewer opinions may differ, patches can receive both positive and negative scores. If reviews with divergent scores are not carefully resolved, they may contribute to a tense reviewing culture and may slow down integration.

In this paper, we study patches with divergent review scores in the OpenStack and Qt communities. Quantitative analysis indicates that patches with divergent review scores: (1) account for 15%–37% of patches that receive multiple review scores; (2) are integrated more often than they are abandoned; and (3) receive negative scores after positive ones in 70% of cases. Furthermore, a qualitative analysis indicates that patches with strongly divergent scores that: (4) are abandoned more often suffer from external issues (e.g., integration planning, content duplication) than patches with weakly divergent scores and patches without divergent scores; and (5) are integrated often address reviewer concerns indirectly (i.e., without changing patches).

Our results suggest that review tooling should integrate with release schedules and detect concurrent development of similar patches to optimize review discussions with divergent scores. Moreover, patch authors should note that even the most divisive patches are often integrated through discussion, integration timing, and careful revision.

Preprint - PDF


  Author = {Toshiki Hirao and Shane McIntosh and Akinori Ihara and Kenichi Matsumoto},
  Title = {{Code Reviews with Divergent Review Scores: An Empirical Study of the OpenStack and Qt Communities}},
  Year = {2020},
  Journal = {IEEE Transactions on Software Engineering},
  Pages = {To appear}