Submitted:
22 July 2025
Posted:
23 July 2025
You are already at the latest version
Abstract
Keywords:
1. Introduction
2. Related Work
3. Methodology
3.1. Definitions
- = number of ’#’ identifiers that refer to a bug ID (in project p);
- = number of ’#’ identifiers that do not refer to a bug ID (in project p);
- = number of bug IDs that are not identified by a ’#’ sign in the development logs (in project p);
- = number of the development logs that do not refer to bug IDs and not considered as referring to bug IDs (in project p);
3.2. Criteria for Selection
- The OSS project must be maintained and remain under active development at the time of the study. This is to avoid the development logs and bug related-data for not being obsolete or retrieving in-complete data sets. Thus only a project repository that can be processed by CVSAnalY and Bicho tool sets have been considered.
-
The OSS project must have at least two accessible repositories: (i) a code repository in the VC system and (ii) a bug repository in the BT system hosted via GitHub. This is to facilitate a joint and automatic identification of IDs of bug related-data and the development logs. The data sets from these repositories will be extracted using the tool-chain developed for this study by integrating CVSAnalY and Bicho. This criteria has an impact on the OSS projects selected in this research, because the repositories should have a format that can be processed by Bicho and CVSAnalY tool sets. In particular: ( provide a github link to the tool-chain)
- The development logs must be based on Git or Subversion, therefore any VC system that is supported by CVSAnalY. (currently it support ...)
- The OSS project BT system repository must be based on Bugzilla (>4), Sourceforge.net (abandoned), Jira (unstable), Launchpad, Allura (unstable) and Github (unstable). therefore any tracker supported by the Bicho tool. (currently it support ...)
3.3. Project Sampling
- Z = confidence level
- p = percentage picking a choice
- c = confidence interval (or merging error)
3.4. Bug ID Data Extraction
- Identifying bugs in development logs: The extraction process is to store the development logs using CVSAnalY. Amongst the tables generated by CVSAnalY, we specifically queried the SCMlog table, which holds the number and unique IDs of the development logs in the VC system. The right-hand side of Table 1 depicts the composition of the CVSAnalY table that was used for retrieval of the information referring to bugs. In order to locate the bugs in the development logs, we used the SCMlog table, which mentions the number and unique IDs of the development logs in the VC system. In the presence of a bug ID, the development logs also mentioned the bug ID with the ’#1234’ format. For the purpose of this research, we are only interested in the bug IDs that are being mentioned by developers: bug IDs do not necessarily need to be “fixed” or “resolved”.
-
Locating bugs related-data in the BT system: Locating bugs related-data in the BT system, we used Bicho to obtain and store all the information contained in the BT System of the OSS projects we sampled; as well as all the issues or bugs reported by the users of the software and confirmed as such by developers on BT system. Two of the tables created by Bicho are the issues and issues_ext_bugzilla table, where the status (open or closed) or the message accompanying the entry is stored and imported for publication by the relative GitHub tracker. In this way, we queried specifically the issues_ext_bugzilla table to obtain the set of unique IDs of bugs report and confirmed by developers.Note: it is worth mentioning that both CVSAnalY and Bicho encountered issues in retrieving the development logs and bug related-data. We imposed a 15 seconds delay in the tool-chain before sending request to the server each time when mining the development logs and bug related-data.
- Obtaining the complete set of bug IDs: in this step, it is necessary to combine the two sets of bug IDs from the development logs and the bug related-data, in order to determine the intersection and the union of the two sets. The intersection contains the common subset of bug IDs, as found in both the development logs and bug related-data of all the OSS projects. On the other hand, the union of the sets is useful to obtain the overall number of bug IDs found in the two databases, and to identify how many bug IDs are actually missing from each database.
- Evaluating the precisions of each SZZ component: the final step of the data extraction is to evaluate the formulas [(1) - (6)] as defined above. Since the uncertainty of the SZZ algorithm is based on the free text of the development logs, we evaluated the TP, TN, FP and FN terms only considering the entries of the development logs, for each of the analysed software project.
4. Worked Example: Bracket Project
4.1. Identifying Bugs in Development Logs and Bug Related-Data
4.2. Obtaining the Complete Set of Bug IDs
- = 4,634
- = 3,117
- (Common bugs & logs) = 267
- S1 - (only in Bicho - bug related-data) = 4,367
- - S1 (only in CVSAnalY - development logs) = 1,865
4.3. Evaluating the Precision of Each SZZ Component
5. Replication and Results
5.1. Replicability and Scalability of the Approach
5.2. Trade-off Between Precision and Recall
5.3. Replication: With a Large Sample of OSS Projects
| P# | Pfixed | Pbug | R# | Rfixed | Rbug | F# | Ffixed | Fbug | |
|---|---|---|---|---|---|---|---|---|---|
| P# | 2.9193E-96 | 4.9707E-104 | 1.8594E-66 | 3.815E-94 | 1.0329E-98 | 6.1107E-64 | 1.0139E-92 | 1.0139E-92 | |
| Pfixed | 3.8349E-20 | 1.8921E-85 | 0.79254 | 0.58966 | 2.6336E-91 | 0.1038 | 0.1038 | ||
| Pbug | 9.1993E-95 | 9.7608E-19 | 4.7604E-19 | 1.194E-102 | 5.6958E-11 | 5.6958E-11 | |||
| R# | 1.3882E-87 | 1.3882E-87 | 6.1107E-64 | 1.6694E-86 | 7.4359E-104 | ||||
| Rfixed | 0.7962 | 1.2705E-93 | 0.16261 | 1.4199E-13 | |||||
| Rbug | 1.294E-96 | 0.24014 | 7.07E-14 | ||||||
| F# | 3.2641E-92 | 7.9778E-111 | |||||||
| Ffixed | 4.9455E-06 | ||||||||
| Fbug |
| Legend: | ||
| PBug = Precision bug | P# = Precision # | Pfixed = Precision fixed |
| RBug = Recall bug | R# = Recall # | Rfixed = Recall fixed |
| Fbug = F-measure bug | F# = F-measure # | Ffixed = F-measure fixed |
6. Threats to Validity
7. Discussion and Conclusion
References
- Anvik, J.; Hiew, L.; Murphy, G.C. Who should fix this bug? In Proceedings of the 28th international conference on Software engineering; 2006; pp. 361–370. [Google Scholar]
- Ayari, K.; Meshkinfam, P.; Antoniol, G.; Di Penta, M. Threats on building models from cvs and bugzilla repositories: The mozilla case study. In Proceedings of the 2007 Conference of the Center for Advanced Studies on Collaborative Research, CASCON ’07, Riverton, NJ, USA, 2007; IBM Corp; pp. 215–228. [Google Scholar]
- Buckland, M.; Gey, F. The relationship between recall and precision. J. Am. Soc. Inf. Sci. 1994, 45, 12–19. [Google Scholar] [CrossRef]
- Casalnuovo, C.; Devanbu, P.; Oliveira, A.; Filkov, V.; Ray, B. Assert use in github projects. In Proceedings of the 37th International Conference on Software Engineering - Volume 1, ICSE ’15, Piscataway, NJ, USA, 2015; IEEE Press; pp. 755–766. [Google Scholar]
- Cubranic, D.; Murphy, G. Hipikat: recommending pertinent software development artifacts. In Software Engineering, 2003. Proceedings. 25th International Conference on, 2003, pp. 408–418.
- da Costa, D.A.; McIntosh, S.; Shang, W.; Kulesza, U.; Coelho, R.; Hassan, A. A framework for evaluating the results of the szz approach for identifying bug-introducing changes. IEEE Transactions on Software Engineering 2016. [Google Scholar] [CrossRef]
- Fischer, M.; Pinzger, M.; Gall, H. Populating a release history database from version control and bug tracking systems. International Conference on Software Maintenance, 2003. ICSM 2003. Proceedings., 2003, pp. 23–32.
- Fischer, M.; Pinzger, M.; Gall, H. Populating a release history database from version control and bug tracking systems. In Software Maintenance, 2003. ICSM 2003. Proceedings. International Conference on, 2003, pp. 23–32.
- Gordon, M.; Kochen, M. Recall-precision trade-off: A derivation. Journal of the American Society for Information Science 1989, 40, 145–151. [Google Scholar] [CrossRef]
- Gotel, O.; Finkelstein, A. An analysis of the requirements traceability problem. In Requirements Engineering, 1994., Proceedings of the First International Conference on, 1994, pp. 94–101.
- Kim, S.; Zimmermann, T.; Pan, K.; Whitehead Jr., E. J. Automatic identification of bug-introducing changes. In Automated Software Engineering, 2006. ASE’06. 21st IEEE/ACM International Conference on, 2006, pp. 81–90.
- Lormans, M.; van Deursen, A. Can lsi help reconstructing requirements traceability in design and test? In Software Maintenance and Reengineering, 2006. CSMR 2006. Proceedings of the 10th European Conference on, 2006, pp. 10 pp.–56.
- Mockus, A.; Votta, L. Identifying reasons for software changes using historic databases. In Software Maintenance, 2000. Proceedings. International Conference on, 2000, pp. 120–130.
- Robles, G.; Koch, S.; González-Barahona, J.M.; Carlos, J. Remote analysis and measurement of libre software systems by means of the cvsanaly tool. In In Proceedings of the 2nd ICSE Workshop on Remote Analysis and Measurement of Software Systems (RAMSS), 2004, pp. 51–55.
- Romo, B.A.; Capiluppi, A.; Hall, T. Filling the gaps of development logs and bug issue data. Proceedings of The International Symposium on Open Collaboration, 2014; ACM, p. 8.
- Romo, B.A.; Capiluppi, A. Towards an automation of the traceability of bugs from development logs: A study based on open source software. In Proceedings of the 19th International Conference on Evaluation and Assessment in Software Engineering, EASE ’15, New York, NY, USA, 2015; ACM, pp. 33:1–33:6.
- Sebastiani, F. Machine learning in automated text categorization. ACM computing surveys (CSUR) 2002, 34, 1–47. [Google Scholar] [CrossRef]
- Śliwerski, J.; Zimmermann, T.; Zeller, A. When do changes induce fixes? ACM SIGSOFT Software Engineering Notes 2005, 30, 1–5. [Google Scholar] [CrossRef]
- Wessa, P. Free statistics software, office for research development and education. 2016.
- Wu, R.; Zhang, H.; Kim, S.; Cheung, S.C. Relink: Recovering links between bugs and changes. In Proceedings of the 19th ACM SIGSOFT Symposium and the 13th European Conference on Foundations of Software Engineering, ESEC/FSE ’11, New York, NY, USA, 2011; ACM, pp. 15–25.
- Yang, H.; Wang, C.; Shi, Q.; Feng, Y.; Chen, Z. Bug inducing analysis to prevent fault prone bug fixes. 2014. Retrieved February 15, 2015 from http://software.nju.edu.cn/zychen/paper/2014SEKE1.pdf.
| 1 | |
| 2 | |
| 3 | As found in http://flossdata.syr.edu/data/gh/2013/
|
| 4 | |
| 5 | |
| 6 | |
| 7 | |
| 8 | Web-enabled scientific services and applications (WESSA) is a free Statistics Software calculation: http://www.wessa.net/
|




| S/N | Project Name | URL | Dev. logs | kLOC | No. Devs |
|---|---|---|---|---|---|
| 1 | Brackets | github.com/adobe/brackets | 16,665 | 300k | 285 |
| 2 | Leaflet | github.com/Leaflet | 3,677 | 6.89 | 194 |
| 3 | github.com/reddit | 6,000 | 200 | 140 | |
| 4 | CocoaPods | github.com/CocoaPods | 4,800 | 22.2 | 160 |
| 5 | Puma | github.com/puma | 1000 | 8.39 | 30 |
| 6 | AutoMapper | github.com/AutoMapper | 700 | 2.78 | 50 |
| 7 | MonoDevelop | github.com/mono/monodevelop | 30,000 | 900 | 170 |
| 8 | CodeHub | github.com/thedillonb/CodeHub | 305 | 12 | 2 |
| 9 | Manos | github.com/jacksonh/manos | 1,113 | 66.4K | 27 |
| 10 | puppet | github.com/puppetlabs/puppet | 20,256 | 379 | 337 |
| BT system | Dev logs | ||||
|---|---|---|---|---|---|
| SZZ part | S1 | S2 | S1 - S2 | S2 - S1 | |
| # | 4,634 | 3,117 | 267 | 4,367 | 1,865 |
| Fix | 4,634 | 63 | 31 | 4,603 | 32 |
| Bug | 4,634 | 154 | 79 | 4,555 | 75 |
| #number (e.g., #123) | ||||||
|---|---|---|---|---|---|---|
| S/N | Project Name | No. logs | TP | FP | FN | TN |
| 1 | Brackets | 100 | 57 | 1 | 42 | 0 |
| 2 | Leaflet | 22 | 6 | 0 | 16 | 0 |
| 3 | 74 | 40 | 12 | 22 | 0 | |
| 4 | CocoaPods | 100 | 18 | 0 | 82 | 0 |
| 5 | Puma | 81 | 11 | 2 | 63 | 0 |
| 6 | AutoMapper | 68 | 19 | 6 | 43 | 0 |
| 7 | MonoDevelop | 100 | 19 | 3 | 78 | 0 |
| 8 | CodeHub | 42 | 0 | 0 | 42 | 0 |
| 9 | Manos | 100 | 1 | 3 | 46 | 0 |
| 10 | puppet | 100 | 0 | 22 | 92 | 0 |
| Fixed | ||||||
|---|---|---|---|---|---|---|
| S/N | Project Name | No. logs | TP | FP | FN | TN |
| 1 | Brackets | 100 | 41 | 41 | 18 | 0 |
| 2 | Leaflet | 22 | 1 | 12 | 9 | 0 |
| 3 | 74 | 14 | 21 | 39 | 0 | |
| 4 | CocoaPods | 100 | 15 | 77 | 8 | 0 |
| 5 | Puma | 81 | 6 | 61 | 14 | 0 |
| 6 | AutoMapper | 68 | 8 | 29 | 31 | 0 |
| 7 | MonoDevelop | 100 | 14 | 55 | 31 | 0 |
| 8 | CodeHub | 42 | 0 | 35 | 7 | 0 |
| 9 | Manos | 100 | 0 | 63 | 37 | 0 |
| 10 | puppet | 100 | 0 | 58 | 17 | 0 |
| Bug | ||||||
|---|---|---|---|---|---|---|
| S/N | Project Name | No. logs | TP | FP | FN | TN |
| 1 | Brackets | 100 | 1 | 3 | 96 | 0 |
| 2 | Leaflet | 22 | 0 | 0 | 22 | 0 |
| 3 | 74 | 1 | 1 | 72 | 0 | |
| 4 | CocoaPods | 100 | 0 | 3 | 97 | 0 |
| 5 | Puma | 81 | 0 | 6 | 75 | 0 |
| 6 | AutoMapper | 68 | 0 | 1 | 67 | 0 |
| 7 | MonoDevelop | 100 | 29 | 8 | 63 | 0 |
| 8 | CodeHub | 42 | 0 | 8 | 34 | 0 |
| 9 | Manos | 100 | 0 | 2 | 98 | 0 |
| 10 | puppet | 100 | 0 | 18 | 82 | 0 |
| S/N | No. Logs | # symbol | Fix | Bug | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| P | R | F | P | R | F | P | R | F | ||
| 1 | 100 | 0.983 | 0.576 | 0.726 | 0.500 | 0.695 | 0.582 | 0.250 | 0.010 | 0.020 |
| 2 | 22 | 1.000 | 0.273 | 0.429 | 0.077 | 0.100 | 0.087 | 0.000 | 0.000 | 0.000 |
| 3 | 74 | 0.769 | 0.645 | 0.702 | 0.400 | 0.264 | 0.318 | 0.500 | 0.014 | 0.027 |
| 4 | 100 | 1.000 | 0.180 | 0.305 | 0.163 | 0.652 | 0.261 | 0.000 | 0.000 | 0.000 |
| 5 | 81 | 0.846 | 0.149 | 0.253 | 0.090 | 0.300 | 0.138 | 0.000 | 0.000 | 0.000 |
| 6 | 68 | 0.760 | 0.306 | 0.437 | 0.216 | 0.205 | 0.211 | 0.000 | 0.000 | 0.000 |
| 7 | 100 | 0.864 | 0.196 | 0.319 | 0.203 | 0.311 | 0.246 | 0.784 | 0.315 | 0.450 |
| 8 | 42 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 |
| 9 | 100 | 0.250 | 0.021 | 0.039 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 |
| 10 | 100 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 |
Disclaimer/Publisher’s Note: The statements, opinions and data contained in all publications are solely those of the individual author(s) and contributor(s) and not of MDPI and/or the editor(s). MDPI and/or the editor(s) disclaim responsibility for any injury to people or property resulting from any ideas, methods, instructions or products referred to in the content. |
© 2025 by the authors. Licensee MDPI, Basel, Switzerland. This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC BY) license (http://creativecommons.org/licenses/by/4.0/).