An Empirical Analysis of Code Smell in Eclipse Framework Ecosystem

Simon Kawuma, Enock Mabberi, David Sabiiti, Moreen Kabarungi, Dickson Kalungi, Evarist Nabaasa

Abstract


Eclipse Framework developers claim that public APIs are supported whereas internal APIs are unsupported. However, there is no guarantee that these interfaces are well-tested because several code smells are reported by interface users. Applications that use code-smelly interfaces risk failing if the code-smell are not fixed.  Previous research revealed that not all code smells can be resolved and fixed within a short period. Thus, interface users have to fix the code smells themselves or abandon that particular interface. To avoid waiting indefinitely for solutions from interface developers or getting involved in code smell fixing, users should use code-smell-free interfaces. However, interface users may not be aware of the existence   of code smell-free interfaces in the Eclipse framework. In this research   study, we used SonarQube tool to carry out an empirical investigation on 28 major Eclipse releases to establish the existence of code-smell- free interfaces. We provide a data set of 218K and 321K code-smell-free public APIs and internal APIs classes respectively. Also, we discovered that on average, 36.1% and 57.2% of the total interfaces in a given Eclipse release are code smell-free public APIs and internal APIs respectively in all the studied Eclipse releases. Furthermore, we have discovered that the number of code smells linearly increases as the Eclipse framework evolves. The average number of code smell and technical Debt is 147K and 2,744 days in all the studied Eclipse releases.  Results from this study can be used by both interface providers and users as a starting point to know tested interfaces and also estimate efforts needed to fix code smells in Eclipse Frameworks.


Keywords


Public APIs; internal APIs; Code smells; Software Quality; Evolution

References


T. Tourwé and T. Mens, "Automated support for framework-based software," in International Conference on Software Maintenance, 2003. ICSM 2003. Proceedings., 2003, pp. 148-157: IEEE.

D. Konstantopoulos, J. Marien, M. Pinkerton, and E. Braude, "Best principles in the design of shared software," in 2009 33rd Annual IEEE International Computer Software and Applications Conference, 2009, vol. 2, pp. 287-292: IEEE.

J. Businge, S. Kawuma, M. Openja, E. Bainomugisha, and A. Serebrenik, "How stable are eclipse application framework internal interfaces?," in 2019 IEEE 26th international conference on software analysis, evolution and reengineering (SANER), 2019, pp. 117-127: IEEE.

J. Businge, A. Serebrenik, and M. G. J. S. Q. J. Van Den Brand, "Eclipse API usage: the good and the bad," vol. 23, pp. 107-141, 2015.

A. Hora, M. T. Valente, R. Robbes, and 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, 2016, pp. 278-289.

J. Businge, A. Serebrenik, and M. van den Brand, "Analyzing the Eclipse API usage: Putting the developer in the loop," in 2013 17th European Conference on Software Maintenance and Reengineering, 2013, pp. 37-46: IEEE.

D. Johannes, F. Khomh, and G. J. S. Q. J. Antoniol, "A large-scale empirical study of code smells in JavaScript projects," vol. 27, pp. 1271-1314, 2019.

A. Gupta, B. Suri, and S. Misra, "A systematic literature review: code bad smells in java source code," in Computational Science and Its Applications–ICCSA 2017: 17th International Conference, Trieste, Italy, July 3-6, 2017, Proceedings, Part V 17, 2017, pp. 665-682: Springer.

R. S. Menshawy, A. H. Yousef, and A. Salem, "Code smells and detection techniques: a survey," in 2021 international mobile, intelligent, and ubiquitous computing conference (MIUCC), 2021, pp. 78-83: IEEE.

U. Mansoor, M. Kessentini, B. R. Maxim, and K. J. S. Q. J. Deb, "Multi-objective code-smells detection using good and bad design examples," vol. 25, pp. 529-552, 2017.

E. Doğan, E. J. I. Tüzün, and S. Technology, "Towards a taxonomy of code review smells," vol. 142, p. 106737, 2022.

A. Tahir, A. Yamashita, S. Licorish, J. Dietrich, and S. Counsell, "Can you tell me if it smells? a study on how developers discuss code smells and anti-patterns in stack overflow," in Proceedings of the 22nd International Conference on Evaluation and Assessment in Software Engineering 2018, 2018, pp. 68-78.

M. M. Rahman, A. Satter, M. M. A. Joarder, and K. Sakib, "An Empirical Study on the Occurrences of Code Smells in Open Source and Industrial Projects," in Proceedings of the 16th ACM/IEEE International Symposium on Empirical Software Engineering and Measurement, 2022, pp. 289-294.

S. Kawuma, J. Businge, and E. Bainomugisha, "Can we find stable alternatives for unstable eclipse interfaces?," in 2016 IEEE 24th international conference on program comprehension (ICPC), 2016, pp. 1-10: IEEE.

S. Kawuma and E. J. a. p. a. Nabaasa, "Identification of promoted eclipse unstable interfaces using clone detection technique," 2018.

L. Guerrouj et al., "Investigating the relation between lexical smells and change-and fault-proneness: an empirical study," vol. 25, pp. 641-670, 2017.

B. Seref and O. J. I. J. S. E. A. Tanriover, "Software code maintainability: a literature review," 2016.

A. J. Jafari, D. E. Costa, R. Abdalkareem, E. Shihab, and N. J. I. T. o. S. E. Tsantalis, "Dependency smells in javascript projects," vol. 48, no. 10, pp. 3790-3807, 2021.

G. Lacerda, F. Petrillo, M. Pimenta, Y. G. J. J. o. S. Guéhéneuc, and Software, "Code smells and refactoring: A tertiary systematic review of challenges and observations," vol. 167, p. 110610, 2020.

M. Agnihotri and A. J. J. o. I. P. S. Chug, "A systematic literature survey of software metrics, code smells and refactoring techniques," vol. 16, no. 4, pp. 915-934, 2020.

H. M. dos Santos, V. H. Durelli, M. Souza, E. Figueiredo, L. T. da Silva, and R. S. Durelli, "Cleangame: Gamifying the identification of code smells," in Proceedings of the XXXIII Brazilian Symposium on Software Engineering, 2019, pp. 437-446.

P. Meananeatra, "Identifying refactoring sequences for improving software maintainability," in Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering, 2012, pp. 406-409.

D. Taibi, A. Janes, V. J. I. Lenarduzzi, and S. Technology, "How developers perceive smells in source code: A replicated study," vol. 92, pp. 223-235, 2017.

A. Yamashita and L. Moonen, "Do developers care about code smells? An exploratory survey," in 2013 20th working conference on reverse engineering (WCRE), 2013, pp. 242-251: IEEE.

D. J. Kim, "An empirical study on the evolution of test smell," in Proceedings of the ACM/IEEE 42nd International Conference on Software Engineering: Companion Proceedings, 2020, pp. 149-151.

S. Jain and A. Saha, "An Empirical Study on Research and Developmental Opportunities in Refactoring Practices," in SEKE, 2019, pp. 313-418.

B. F. Békefi, K. Szabados, and A. Kovács, "A case study on the effects and limitations of refactoring," in 2019 IEEE 15th International Scientific Conference on Informatics, 2019, pp. 000213-000218: IEEE.

S. Vidal, I. Berra, S. Zulliani, C. Marcos, J. A. D. J. A. T. o. S. E. Pace, and Methodology, "Assessing the refactoring of brain methods," vol. 27, no. 1, pp. 1-43, 2018.

A. AbuHassan, M. Alshayeb, L. J. J. o. S. E. Ghouti, and Process, "Software smell detection techniques: A systematic literature review," vol. 33, no. 3, p. e2320, 2021.

A. Kaur, G. J. H. S. Dhiman, N. I. O. A. Theory, and I. Applications, "A review on search-based tools and techniques to identify bad code smells in object-oriented systems," pp. 909-921, 2019.

M. Tufano et al., "When and why your code starts to smell bad," in 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering, 2015, vol. 1, pp. 403-414: IEEE.

V. Lenarduzzi, A. Sillitti, and D. Taibi, "Analyzing forty years of software maintenance models," in 2017 IEEE/ACM 39th international conference on software engineering companion (ICSE-C), 2017, pp. 146-148: IEEE.

V. Lenarduzzi, A. Sillitti, and D. Taibi, "A survey on code analysis tools for software maintenance prediction," in Proceedings of 6th International Conference in Software Engineering for Defence Applications: SEDA 2018 6, 2020, pp. 165-175: Springer.

D. Marcilio, R. Bonifácio, E. Monteiro, E. Canedo, W. Luz, and 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), 2019, pp. 209-219: IEEE.

C. Vassallo, S. Panichella, F. Palomba, S. Proksch, H. C. Gall, and A. J. E. S. E. Zaidman, "How developers engage with static analysis tools in different contexts," vol. 25, pp. 1419-1457, 2020.

L. Lavazza, D. Tosi, and S. Morasca, "An empirical study on the persistence of spotbugs issues in open-source software evolution," in International Conference on the Quality of Information and Communications Technology, 2020, pp. 144-151: Springer.




DOI: https://doi.org/10.17509/seict.v6i1.76200

Refbacks

  • There are currently no refbacks.


Copyright (c) 2025 Journal of Software Engineering, Information and Communication Technology (SEICT)

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

Journal of Software Engineering, Information and Communicaton Technology (SEICT), 
(e-ISSN:
2774-1699 | p-ISSN:2744-1656) published by Program Studi Rekayasa Perangkat Lunak, Kampus UPI di Cibiru.


 Indexed by.