RSTrace+: Reviewer suggestion using software artifact traceability graphs

Abstract Context: Various types of artifacts (requirements, source code, test cases, documents, etc.) are produced throughout the lifecycle of a software. These artifacts are connected with each other via traceability links that are stored in modern application lifecycle management repositories. Throughout the lifecycle of a software, various types of changes can arise in any one of these artifacts. It is important to review such changes to minimize their potential negative impacts. To make sure the review is conducted properly, the reviewer(s) should be chosen appropriately. Objective: We previously introduced a novel approach, named RSTrace, to automatically recommend reviewers that are best suited based on their familiarity with a given artifact. In this study, we introduce an advanced version of RSTrace, named RSTrace+ that accounts for recency information of traceability links including practical tool support for GitHub. Methods: In this study, we conducted a series of experiments on finding the appropriate code reviewer(s) using RSTrace+ and provided a comparison with the other code reviewer recommendation approaches. Results: We had initially tested RSTrace+ on an open source project (Qt 3D Studio) and achieved a top-3 accuracy of 0.89 with an MRR (mean reciprocal ranking) of 0.81. In a further empirical evaluation of 40 open source projects, we compared RSTrace+ with Naive-Bayes, RevFinder and Profile-based approach, and observed higher accuracies on the average. Conclusion: We confirmed that the proposed reviewer recommendation approach yields promising top-k and MRR scores on the average compared to the existing reviewer recommendation approaches. Unlike other other code reviewer recommendation approaches, RSTrace+ is not limited to recommending reviewers for source code artifacts and can potentially be used for recommending reviewers for other types of artifacts. Our approach can also visualize the affected artifacts and help the developer to make assessments of the potential impacts of change to the reviewed artifact.

[1]  Nachiappan Nagappan,et al.  Predicting defects using network analysis on dependency graphs , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[2]  Bedir Tekinerdogan,et al.  Adopting integrated application lifecycle management within a large-scale software company: An action research approach , 2019, J. Syst. Softw..

[3]  Eray Tüzün,et al.  Investigating the Validity of Ground Truth in Code Reviewer Recommendation Studies , 2019, 2019 ACM/IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM).

[4]  Denys Poshyvanyk,et al.  Journal of Software Maintenance and Evolution: Research and Practice Assigning Change Requests to Software Developers , 2022 .

[5]  Bernd Brügge,et al.  Bug report assignee recommendation using activity profiles , 2013, 2013 10th Working Conference on Mining Software Repositories (MSR).

[6]  Alexandru Iosup,et al.  Survey of Graph Analysis Applications , 2018, ArXiv.

[7]  Xin Ye,et al.  Learning to Rank Reviewers for Pull Requests , 2019, IEEE Access.

[8]  Vipin Balachandran,et al.  Reducing human effort and improving quality in peer code reviews using automatic static analysis and reviewer recommendation , 2013, 2013 35th International Conference on Software Engineering (ICSE).

[9]  Xu Wang,et al.  A hybrid approach to code reviewer recommendation with collaborative filtering , 2017, 2017 6th International Workshop on Software Mining (SoftwareMining).

[10]  Katsuro Inoue,et al.  Search-Based Peer Reviewers Recommendation in Modern Code Review , 2016, 2016 IEEE International Conference on Software Maintenance and Evolution (ICSME).

[11]  Akito Monden,et al.  Patch Reviewer Recommendation in OSS Projects , 2013, 2013 20th Asia-Pacific Software Engineering Conference (APSEC).

[12]  Jesús M. González-Barahona,et al.  Perceval: Software Project Data at Your Will , 2018, 2018 IEEE/ACM 40th International Conference on Software Engineering: Companion (ICSE-Companion).

[13]  Gail C. Murphy,et al.  Who should fix this bug? , 2006, ICSE.

[14]  Per Runeson,et al.  Guidelines for conducting and reporting case study research in software engineering , 2009, Empirical Software Engineering.

[15]  J. Lamberti Correct , 2020, Definitions.

[16]  Jason Cohen Modern Code Review , 2011, Making Software.

[17]  Luke Church,et al.  Modern Code Review: A Case Study at Google , 2017, 2018 IEEE/ACM 40th International Conference on Software Engineering: Software Engineering in Practice Track (ICSE-SEIP).

[18]  David Lo,et al.  Who should review this change?: Putting text and file location analyses together for more accurate recommendations , 2015, 2015 IEEE International Conference on Software Maintenance and Evolution (ICSME).

[19]  Weiqiang Zhang,et al.  Developer social networks in software engineering: construction, analysis, and applications , 2014, Science China Information Sciences.

[20]  Jia-Huan He,et al.  CoreDevRec: Automatic Core Member Recommendation for Contribution Evaluation , 2015, Journal of Computer Science and Technology.

[21]  Hajimu Iida,et al.  Who should review my code? A file location-based code-reviewer recommendation approach for Modern Code Review , 2015, 2015 IEEE 22nd International Conference on Software Analysis, Evolution, and Reengineering (SANER).

[22]  Eunjoo Lee,et al.  Understanding Review Expertise of Developers: A Reviewer Recommendation Approach Based on Latent Dirichlet Allocation , 2018, Symmetry.

[23]  Gaël Varoquaux,et al.  Scikit-learn: Machine Learning in Python , 2011, J. Mach. Learn. Res..

[24]  Patrick Mäder,et al.  The SEOSS 33 dataset — Requirements, bug reports, code history, and trace links for entire projects , 2019, Data in brief.

[25]  Mik Kersten,et al.  A Cambrian Explosion of DevOps Tools , 2018, IEEE Software.

[26]  Christian Bird,et al.  Automatically Recommending Peer Reviewers in Modern Code Review , 2016, IEEE Transactions on Software Engineering.

[27]  Christian Bird,et al.  Code Reviewing in the Trenches: Challenges and Best Practices , 2018, IEEE Software.

[28]  Xin Yang,et al.  Social network analysis in open source software peer review , 2014, SIGSOFT FSE.

[29]  Bruno Rossi,et al.  A Large-Scale Study on Source Code Reviewer Recommendation , 2018, 2018 44th Euromicro Conference on Software Engineering and Advanced Applications (SEAA).

[30]  Meng Xia,et al.  Exploring how software developers work with mention bot in GitHub , 2018, CCF Transactions on Pervasive Computing and Interaction.

[31]  Gang Yin,et al.  RevRec: A two-layer reviewer recommendation algorithm in pull-based development model , 2018 .

[32]  John Anvik,et al.  Automating bug report assignment , 2006, ICSE.

[33]  Krzysztof Stencel,et al.  Profile based recommendation of code reviewers , 2018, Journal of Intelligent Information Systems.

[34]  Chanchal Kumar Roy,et al.  CORRECT: Code Reviewer Recommendation in GitHub Based on Cross-Project and Technology Experience , 2016, 2016 IEEE/ACM 38th International Conference on Software Engineering Companion (ICSE-C).

[35]  Thomas Zimmermann,et al.  Improving Code Review by Predicting Reviewers and Acceptance of Patches , 2009 .

[36]  Gang Yin,et al.  Reviewer recommendation for pull-requests in GitHub: What can we learn from code review and bug assignment? , 2016, Inf. Softw. Technol..

[37]  Eray Tüzün,et al.  Reviewer Recommendation using Software Artifact Traceability Graphs , 2019, PROMISE.