An Empirical Study of Bugs in Eclipse Stable Internal Interfaces
Main Article Content
Abstract
The Eclipse framework is a popular and widely used framework that has been evolving for over a decade. The framework provides both stable interfaces (APIs) and unstable interfaces (non-APIs). Despite being discouraged by Eclipse, application developers often use non-APIs which cause their systems to fail when ported to new framework releases. Previous studies showed that applications using relatively old non-APIs are more likely to be compatible with new releases compared to the ones that used newly introduced non-APIs. Furthermore, from our previous study about the stability of Eclipse internal interfaces, we discovered that there exist 327K stable non-API methods as the Eclipse framework evolves. In the same study, we recommended that 327K stable non-API methods can be used by Eclipse interface providers as possible candidates for promotion to stable interfaces. However, since non-APIs are unsupported and considered to be immature i.e., can contain bugs, to this end there exist a need to first investigate the stable non-APIs for possible bugs before they can be promoted to APIs. In this study, we empirically investigated the stable non-API for possible bugs using Sonarqube software quality tool. We discovered that over 79.8% classes containing old stable non-APIs methods have zero bugs. Results from this study can be used by both interface providers and users as a starting point to analyze which interfaces are well tested and also estimate how much work could be involved when performing bug fixing for a given eclipse release.
Downloads
Article Details

This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
How to Cite
References
T. Tourwe, T. Mens, Automated support for framework-based software, in: International Conference on Software Maintenance,
ICSM 2003. Proceedings., 2003, pp. 148–157. doi:10.1109/ICSM.2003.1235416. https://doi.org/10.1109/ICSM.2003.1235416
D. Konstantopoulos, J. Marien, M. Pinkerton, E. Braude, Best principles in the design of shared software, in: Proceedings of the
33rd Annual IEEE International Computer Software and Applications Conference - Volume 02, COMPSAC ’09, IEEE Computer Society, Washington, DC, USA, 2009, pp. 287–292. doi:10.1109/COMPSAC.2009.151. URL http://dx.doi.org/10.1109/COMPSAC.2009.151
S. Moser, O. Nierstrasz, The effect of object-oriented frame¬works on developer productivity, Computer 29 (9) (1996) 45–51.
doi:10.1109/2.536783. https://doi.org/10.1109/2.536783
J. des Rivie`res, How to use the Eclipse API, http://www.eclipse.org/articles/article.php?file=Article-API-Use/ index.html, consulted January, 2018.
Oracle, Why developers should not write programs that call ’sun’ packages, https://www.oracle.com/technetwork/java/
faq-sun-packages-142232.html, consulted October, 2018.
T. jBPM Team, The jbpm api, http://docs.jboss.org/jbpm/v5. 0/userguide/ch05.html#d0e2099, consulted October, 2018.
S. Bechtold, S. Brannen, J. Link, M. Merdes, M. Philipp, Stein, Junit 5 user guide, https://junit.org/junit5/docs/ current/user-guide/#api-evolution, consulted October, 2018.
B. Dagenais, M. P. Robillard, Recommending adaptive changes for framework evolution, in: Proceedings of the 30th International
Conference on Software Engineering, ICSE ’08, ACM, New York, NY, USA, 2008, pp. 481–490. doi:10.1145/1368088.1368154. URL http://doi.acm.org/10.1145/1368088.1368154
J. Businge, A. Serebrenik, M. G. J. van den Brand, Survival of Eclipse third-party plug-ins, in: ICSM, 2012, pp. 368–377. https://doi.org/10.1109/ICSM.2012.6405295
J. Businge, A. Serebrenik, M. G. J. v. Brand, Compatibility prediction of Eclipse third-party plug-ins in new Eclipse releases, in: 12th IEEE
International Working Conference on Source Code Analysis and Manipulation, 2012, pp. 164–173. https://doi.org/10.1109/SCAM.2012.10
J. Businge, M. van den, A. Serebrenik, Eclipse API usage: The good and the bad, Software Quality Journal 23 (2013) 107–141.
https://doi.org/10.1007/s11219-013-9221-3
J. Businge, A. Serebrenik, M. G. J. van den Brand, Eclipse API usage: the good and the bad, in: SQM, 2012, pp. 54–62.
J. Businge, A. Serebrenik, M. G. J. v. Brand, Analyzing the Eclipse API usage: Putting the developer in the loop, in: 17th European
Conference on Software Maintenance and Reengineering (CSMR’13), 2013, pp. 37–46. https://doi.org/10.1109/CSMR.2013.14
S. Kawuma, J. Businge, E. Bainomugisha, Can we find stable alternatives for unstable eclipse interfaces?, in: Program
Com-prehension (ICPC), 2016 IEEE 24th International Conference on, IEEE, 2016, pp. 1–10. https://doi.org/10.1109/ICPC.2016.7503716
A. Hora, M. T. Valente, R. Robbes, N. Anquetil, When should internal interfaces be promoted to public?, in: Proceedings of the 2016 24th
ACM SIGSOFT International Symposium on Foundations of Software Engineering, ACM, 2016, pp. 278–289. https://doi.org/10.1145/2950290.2950306
S. Kawuma, E. Nabaasa, Identification of promoted eclipse unstable interfaces using clone detection technique, Inter¬national Journal of
Software Engineering and Application (2018). https://doi.org/10.5121/ijsea.2018.9502
J. Businge, S. Kawuma, M. Openja, E. Bainomugisha, A. Serebrenik, How stable are eclipse application framework internal interfaces?, in:
IEEE 26th International Con¬ference on Software Analysis, Evolution and Reengineering (SANER), IEEE, 2019, pp. 117–127.
https://doi.org/10.1109/SANER.2019.8668018.
A. Campbell, Metric definitions - sonarqube documentation, https://docs.sonarqube.org/display/SONAR/Metric+ Definitions,
consulted July, 2018.
J. des Rivie`res, Evolving Java-based APIs, http://wiki.eclipseorg/Evolving Java-based APIs, consulted January, 2018.
ProfessionalQA.com, Difference between error, mistake, fault, bug, failure, defect., https://www.professionalqa.com/
difference-between-error-bug-mistake-fault-bug-failure-defect, consulted December, 2019.
V. Lenarduzzi, A. Sillitti, D. Taibi, Analyzing forty years of software maintenance models, in: 2017 IEEE/ACM 39th In¬ternational
Conference on Software Engineering Companion (ICSE-C), IEEE, 2017, pp. 146–148. https://doi.org/10.1109/ICSE-C.2017.122
V. Lenarduzzi, A. Sillitti, D. Taibi, A survey on code analysis tools for software maintenance prediction, in: International Conference in
Software Engineering for Defence Applica¬tions, Springer, 2018, pp. 165–175. https://doi.org/10.1007/978-3-030-14687-0_15
C. Vassallo, S. Panichella, F. Palomba, S. Proksch, H. C. Gall, A. Zaidman, How developers engage with static analysis tools in
different contexts, Empirical Software Engineering 25 (2) (2020) 1419–1457. https://doi.org/10.1007/s10664-019-09750-5
V. Lenarduzzi, F. Lomio, H. Huttunen, D. Taibi, Are sonar¬qube rules inducing bugs?, in: 2020 IEEE 27th International Conference on
Software Analysis, Evolution and Reengineer¬ing (SANER), IEEE, 2020, pp. 501–511. https://doi.org/10.1109/SANER48275.2020.9054821
E. Foundation, Eclipse project archived download,
http://archive.eclipse.org/eclipse/downloads/index.php, consulted January, 2018.
E. Project, Eclipse ide for java developers, https://www.eclipse.org/downloads/packages/release/2020-03/r, consulted July,
D. Marcilio, R. Bonifa´cio, E. Monteiro, E. Canedo, W. Luz, G. Pinto, Are static analysis violations really fixed? a closer look at realistic
usage of sonarqube, in: 2019 IEEE/ACM 27th International Conference on Program Comprehension (ICPC), IEEE, 2019, pp. 209–219. https://doi.org/10.1109/ICPC.2019.00040
ggraham412, Using internal interfaces while preserving encapsulation, https://www.codeproject.com/Articles/43156/Using-Internal-Interfaces-While-Preserving-Encapsu, consulted April, 2018. https://doi.org/10.1145/1862372.1862389
J. Businge, A. Serebrenik, M. G. J. van den Brand, An empirical study of the evolution of Eclipse third-party plug-ins, in: EVOL-IWPSE’10,
ACM, 2010, pp. 63–72.
J. Businge, S. Kawuma, E. Bainomugisha, F. Khomh, E. Nabaasa, Code authorship and fault-proneness of open-source android
applications: An empirical study, in: Pro¬ceedings of the 13th International Conference on Predictive Models and Data Analytics in
Software Engineering, ACM, 2017, pp. 33–42. https://doi.org/10.1145/3127005.3127009
C. Bird, N. Nagappan, B. Murphy, H. Gall, P. Devanbu, Don’t touch my code!: examining the effects of ownership on software quality, in:
Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering, ACM,
, pp. 4–14. https://doi.org/10.1145/2025113.2025119
L. Guerrouj, Z. Kermansaravi, V. Arnaoudova, B. C. Fung, F. Khomh, G. Antoniol, Y.-G. Gue´he´neuc, Investigating the relation
between lexical smells and change-and fault-proneness: an empirical study, Software Quality Journal 25 (3) (2017) 641–670.
https://doi.org/10.1007/s11219-016-9318-6
G. Bavota, M. Linares-Vasquez, C. E. Bernal-Cardenas,M. Di Penta, R. Oliveto, D. Poshyvanyk, The impact of api change-and
fault-proneness on the user ratings of android apps, IEEE Transactions on Software Engineering 41 (4) (2015) 384–407.
https://doi.org/10.1109/TSE.2014.2367027
M. Asaduzzaman, M. C. Bullock, C. K. Roy, K. A. Schneider, Bug introducing changes: A case study with android, in: Min¬ing Software
Repositories (MSR), 2012 9th IEEE Working Conference on, IEEE, 2012, pp. 116–119. https://doi.org/10.1109/MSR.2012.6224267
K. Jezek, J. Dietrich, P. Brada, How java apis break–an empirical study, Information and Software Technology 65 (2015) 129–146.
https://doi.org/10.1016/j.infsof.2015.02.014
A. Hora, R. Robbes, N. Anquetil, A. Etien, S. Ducasse, M. T. Valente, How do developers react to api evolution? the pharo ecosystem case,
in: Software Maintenance and Evolution (ICSME), 2015 IEEE International Conference on, IEEE, 2015, pp. 251–260.
https://doi.org/10.1109/ICSM.2015.7332471
D. Hou, X. Yao, Exploring the intent behind api evolution: A case study, in: 2011 18th Working Conference on Reverse En-gineering,
, pp. 131–140. doi:10.1109/WCRE.2011.24. https://doi.org/10.1109/WCRE.2011.24
Nagaraju, T., & Suneetha, Dr. Ch. (2019). Distributed Framework for Processing High Resolution Remote Sensing Images. In International
Journal of Engineering and Advanced Technology (Vol. 9, Issue 1, pp. 4287–4292). https://doi.org/10.35940/ijeat.j9976.109119
Mustapha, I., Ashfaq, M., & Qureshi, M. I. (2019). A New Integrated Framework for ISO 9001 Quality Management System Maintenance in Malaysia. In International Journal of Innovative Technology and Exploring Engineering (Vol. 9, Issue 2, pp. 4519–4527). https://doi.org/10.35940/ijitee.b9019.129219
Razia, Dr. S., Reddy, M. V. D., Mohan, K. J. S., & Teja, D. S. (2019). Image Classification using Deep Learning Framework. In
International Journal of Recent Technology and Engineering (IJRTE) (Vol. 8, Issue 4, pp. 10253–10258). https://doi.org/10.35940/ijrte.d4462.118419