Аналіз алгоритмів машинного навчання для задачі пошуку дублікатів у програмному коді

Автор(и)

  • Тетяна Олександрівна Калюжна Національний технічний університет України «Київський політехнічний інститут імені Ігоря Сікорського», Україна https://orcid.org/0000-0002-0937-8988
  • Євгеній Юрійович Куб’юк Національний технічний університет України «Київський політехнічний інститут імені Ігоря Сікорського», Україна https://orcid.org/0000-0002-7086-0976

DOI:

https://doi.org/10.15587/2706-5448.2022.263235

Ключові слова:

виявлення клонів, методи машинного навчання, дерево рішень, Support Vector Machine, TECCD, датасет

Анотація

Об'єктом дослідження є код на мові програмування Python, проаналізований методами машинного навчання з метою виявлення клонів.

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

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

 розпізнавання клонів, що переписані з однієї мови програмування на іншу;

 виявлення вразливостей в коді;

 покращення роботи моделі за допомогою створення більш універсальних датасетів.

Перспективність роботи полягає в навчанні моделі дерева рішень для точного та швидкого виявлення клонів коду, що потенційно може мати широке використання для виявлення плагіату як у навчальних закладах, так і в IT-компаніях.

Біографії авторів

Тетяна Олександрівна Калюжна, Національний технічний університет України «Київський політехнічний інститут імені Ігоря Сікорського»

Кафедра системного проектування

Євгеній Юрійович Куб’юк, Національний технічний університет України «Київський політехнічний інститут імені Ігоря Сікорського»

Кафедра системного проектування

Посилання

  1. Roy, C. K., Cordy, J. R., Koschke, R. (2009). Comparison and evaluation of code clone detection techniques and tools: A qualitative approach. Science of Computer Programming, 74 (7), 470–495. doi: http://doi.org/10.1016/j.scico.2009.02.007
  2. Code Duplicate. Available at: https://t2informatik.de/en/smartpedia/code-duplicate/
  3. Roy, C. K., Cordy, J. R. (2007). A Survey on Software Clone Detection Research. Computer and Information Science, 115 (541), 115.
  4. Arammongkolvichai, V., Koschke, R., Ragkhitwetsagul, C., Choetkiertikul, M., Sunetnanta, T. (2019). Improving Clone Detection Precision Using Machine Learning Techniques. 2019 10th International Workshop on Empirical Software Engineering in Practice (IWESEP), 31–36. doi: http://doi.org/10.1109/iwesep49350.2019.00014
  5. Jadon, S. (2016). Code Clones Detection Using Machine Learning Technique: Support Vector Machine. International Conference on Computing, Communication and Automation (ICCCA2016), 299–303. doi: http://doi.org/10.1109/ccaa.2016.7813733
  6. Gao, Y., Wang, Z., Liu, S., Yang, L., Sang, W., Cai, Y. (2019). TECCD: A Tree Embedding Approach for Code Clone Detection. 2019 IEEE International Conference on Software Maintenance and Evolution (ICSME), 145–156. doi: http://doi.org/10.1109/icsme.2019.00025
  7. Salzberg, S. (1994). C4.5: Programs for Machine Learning by J. Ross Quinlan. Morgan Kaufmann Publishers, Inc., 1993. Machine Learning, 16 (3), 235–240. doi: http://doi.org/10.1007/bf00993309
  8. Conforti, R., Leoni, M. D., Rosa, M. L., Aalst, W. V. D. (2013). Supporting risk-informed decisions during business process execution. 25th International Conference on Advanced Information Systems Engineering (CAiSE’13), 116–132. doi: http://doi.org/10.1007/978-3-642-38709-8_8
  9. Kundel, D. (2020). ASTs – What are they and how to use them. Available at: https://www.twilio.com/blog/abstract-syntax-trees
  10. Agerholm, S., Larsen, P. G. (1999). A Lightweight Approach to Formal Methods. Lecture Notes in Computer Science, 168–183. doi: http://doi.org/10.1007/3-540-48257-1_10
  11. BigCloneBench. Available at: https://github.com/clonebench/BigCloneBench
  12. Buckland, M., Gey, F. (1994). The relationship between Recall and Precision. Journal of the American Society for Information Science, 45 (1), 12–19. doi: https://doi.org/10.1002/(SICI)1097-4571(199401)45:1<12::AID-ASI2>3.0.CO;2-L
  13. Decision Tree Classification Algorithm. Available at: https://www.javatpoint.com/machine-learning-decision-tree-classification-algorithm
  14. Decision Tree Classifier. Available at: https://www.sciencedirect.com/topics/computer-science/decision-tree-classifier
  15. Bondarenko, O. (2021). Matrytsia nevidpovidnostei. Available at: https://oleghbond.medium.com/матриця-невідповідностей-329e7e4bf05e
  16. Kubiuk, Y., Kyselov, G. (2021). Comparative analysis of approaches to source code vulnerability detection based on deep learning methods. Technology Audit and Production Reserves, 3 (2 (59)), 19–23. doi: http://doi.org/10.15587/2706-5448.2021.233534
  17. Scikit-Learn. Available at: https://scikit-learn.org/stable/

##submission.downloads##

Опубліковано

2022-08-26

Як цитувати

Калюжна, Т. О., & Куб’юк, Є. Ю. (2022). Аналіз алгоритмів машинного навчання для задачі пошуку дублікатів у програмному коді. Technology Audit and Production Reserves, 4(2(66), 6–13. https://doi.org/10.15587/2706-5448.2022.263235

Номер

Розділ

Інформаційні технології: Оригінальне дослідження