МЕТОД ПОШУКУ ПРОГРАМНОГО КОДУ У ПУБЛІЧНИХ СИСТЕМАХ КОНТРОЛЮ ВЕРСІЙ ЗА ЗНАЧЕННЯМИ МЕТРИКИ WMC

https://doi.org/10.23939/ujit2025.01.16
Надіслано: Січень 22, 2025
Переглянуто: Лютий 04, 2025
Прийнято: Травень 01, 2025
1
Національний університет "Львівська політехніка", м. Львів, Україна
2
Національний університет "Львівська політехніка", м. Львів, Україна
3
Національний університет "Львівська політехніка"
4
Національний університет «Львівська політехніка»

У роботі досліджено взаємозв’язок між популярністю репозиторіїв з відкритим кодом та їхньою якістю, оціненою за допомогою статичних метрик якості коду. Основну увагу звернено на визначення ключових показників для двох різних парадигм, а саме функціонального та об’єктно-орієнтованого програмування. Кінцевою метою дослідження є розроблення ефективного методу пошуку коду для виявлення високоякісних репозиторіїв GitHub, щоб забезпечити баланс між популярністю репозиторію та якістю коду для подальшого його використання у навчанні моделей машинного навчання. Для досягнення цієї мети в роботі розглянуто сучасні способи вилучення даних зі сховищ, визначено відповідні метрики якості коду для двох парадигм та проаналізовано кореляцію між показниками якості та популярністю репозиторію.

Виконано порівняльний аналіз методів вилучення даних, зокрема GitHub API, GHTorrent та GitHub Archive. Для кожного методу створено детальну порівняльну таблицю із оцінкою їхніх переваг та обмежень, а також визначено оптимальний підхід для подальшої роботи. Крім того, для кожної парадигми програмування визначено як фундаментальні, так і нішеві метрики якості для комплекснішої оцінки якості репозиторіїв. У цьому дослідженні розглянуто SonarQube, який дає уявлення про якість коду, його підтримуваність і технічний борг, що робить SonarQube цінним інструментом для оцінювання придатності репозиторію для прогнозування дефектів на основі машинного навчання.

Багато поширених проєктів із відкритим кодом набувають популярності завдяки активному внеску спільноти та широкому використанню, але якість їхнього коду не завжди відповідає високим стандартам. І навпаки, менш відомі репозиторії можуть демонструвати вищу якість, але недостатньо поширені, щоб вважатися репрезентативними наборами даних для навчання моделей машинного навчання. Результати цього дослідження роблять внесок у ширшу сферу забезпечення якості програмного забезпечення та прогнозування дефектів, надаючи структурований підхід до оцінювання репозиторіїв із відкритим вихідним кодом. Запропонований метод може покращити відбір надійних наборів даних для навчання моделей машинного навчання в інженерії програмного забезпечення, що у підсумку сприятиме ефективнішому виявленню дефектів та покращенню процесів контролю якості програмного забезпечення.

[1] Mombach, T., & Valente, M. T. (2018). GitHub REST API vs GHTorrent vs GitHub Archive: A Comparative Study.

[2] Sharma, T., Kechagia, M., Georgiou, S., Tiwari, R., Vats, I., Moazen, H., & Sarro, F. (2024). A survey on machine learning techniques applied to source code. Journal of Systems and Software, 209, 111934. https://doi.org/10.1016/j.jss.2023.111934

[3] Riaz, M., Mendes, E., & Tempero, E. (2009). A systematic review of software maintainability prediction and metrics. 2009 3rd International Symposium on Empirical Software Engineering and Measurement, 367–377. https://doi.org/ 10.1109/ esem.2009. 5314233

[4] Azeem, M. I., Palomba, F., Shi, L., & Wang, Q. (2019). Machine learning techniques for code smell detection: A systematic literature review and meta-analysis. Information and Software Technology, 108, 115–138. https://doi.org/10.1016/ j.infsof. 2018. 12.009

[5] Mashhadi, E., Ahmadvand, H., & Hemmati, H. (2023). Method- level bug severity prediction using source code metrics and LLMS. 2023 IEEE 34th International Symposium on Software Reliability Engineering (ISSRE), 635–646. https://doi.org/ 10.1109/issre59848.2023.00055

[6] Gray, D. P. H. (2013). Software defect prediction using static code metrics: Formulating a methodology. https://doi.org/ 10.18745/ th.11067

[7] Kumar, L., & Sureka, A. (2017). A comparative study of different source code metrics and machine learning algorithms for predicting change proneness of object oriented systems. arXiv (Cornell University). https://doi.org/10.48550/arxiv.1712.07944

[8] Esteves, G., Figueiredo, E., Veloso, A., Viggiato, M., & Ziviani, N. (2020). Understanding machine learning software defect predictions. Automated Software Engineering, 27(34), 369–392. https://doi.org/10.1007/s10515-020-00277-4

[9] Rosenberg, L.H., &Hyatt, L.E.(2002). Software QualityMetrics for Object-Oriented Environments.

[10] Zage, W., &Zage, D.(1993). Evaluating design metrics on large- scale software. IEEE Software, 10(4), 75–81. https://doi.org/10.1109/52.219620

[11] Warmuth, D. (2019). Validation of software measures for the functional programming language Erlang. https://doi.org/ 10.18452/19886

[12] Adigun, M., Sotonwa, K., Adeyiga, J., & Abas, M. (2020). Software Complexity Metrics of Functional Languages Using Binary Search Algorithm.

[13] Nuñez-Varela, A. S., Pérez-Gonzalez, H. G., Martínez-Perez, F. E., & Soubervielle-Montalvo, C. (2017). Source code metrics: A systematic mapping study. Journal of Systems and Software, 128, 164–197. https://doi.org/10.1016/j.jss.2017.03.044

[14] Zagane, M., Abdi, M. K., & Alenezi, M. (2020). Deep learning for software vulnerabilities detection using code metrics. IEEE Access, 8, 74562–74570. https://doi.org/10.1109/access.2020. 2988557

[15] Beal, F., Rucker de Bassi, P., & Cabrera Paraiso, E. (2017). Developer modelling using software qualitymetrics and machine learning. Proceedings of the 19th International Conference on Enterprise Information Systems, 424–432. https://doi.org/ 10.5220/ 0006327104240432

[16] Marcilio, D., Bonifacio, R., Monteiro, E., Canedo, E., Luz, W., & Pinto, G. (2019). Are static analysis violations really fixed? A closer look at realistic usage of Sonarqube. 2019 IEEE/ACM 27th International Conference on Program Comprehension (ICPC), 209–219. https://doi.org/10.1109/icpc.2019.00040

[17] Medeiros, N., Ivaki, N., Costa, P., & Vieira, M. (2020). Vulnerable code detection using software metrics and machine learning. IEEE Access, 8, 219174–219198. https://doi.org/ 10.1109/access. 2020.3041181

[18] Manjhi, D., & Chaturvedi, A. (2019). Software component reusability classification in Functional Paradigm. 2019 IEEE International Conference on Electrical, Computer and Communication Technologies (ICECCT), 17. https://doi.org/ 10.1109/ icecct. 2019.8869123

[19] Ardito, L., Coppola, R., Barbato, L., & Verga, D. (2020). A tool- based perspective on software code maintainability metrics: A

Systematic Literature Review. Scientific Programming, 2020, 126. https://doi.org/10.1155/2020/8840389

[20] Jha, S., Kumar, R., Hoang Son, L., Abdel-Basset, M., Priyadarshini, I., Sharma, R., & Viet Long, H. (2019). Deep Learning Approach for software maintainability metrics prediction. IEEE Access, 7, 61840–61855. https://doi.org/ 10.1109/ access. 2019.2913349

[21] Agnihotri, M., & Chug, A. (2020). A Systematic Literature Survey of Software Metrics, Code Smells and Refactoring Techniques. https://doi.org/10.3745/JIPS.04.0184

[22] Mhawish, M. Y., &Gupta, M.(2020). Predicting code smells and analysis of predictions: Using machine learning techniques and software metrics. Journal of Computer Science and Technology, 35(6), 1428–1445. https://doi.org/10.1007/s11390-020-0323-7

[23] Jarczyk, O., Gruszka, B., Jaroszewicz, S., Bukowski, L., & Wierzbicki, A. (2014). GitHub projects. Quality Analysis of open-source software. Lecture Notes in Computer Science, 80– 94. https://doi.org/10.1007/978-3-319-13734-6_6

[24] Borges, H., & Tulio Valente, M. (2018). What’sin a github star? understanding repository starring practices in a social coding platform. Journal of Systems and Software, 146, 112–129. https://doi.org/10.1016/j.jss.2018.09.016