Аналіз алгоритмів машинного навчання для задачі пошуку дублікатів у програмному коді
DOI:
https://doi.org/10.15587/2706-5448.2022.263235Ключові слова:
виявлення клонів, методи машинного навчання, дерево рішень, Support Vector Machine, TECCD, датасетАнотація
Об'єктом дослідження є код на мові програмування Python, проаналізований методами машинного навчання з метою виявлення клонів.
Дана робота присвячена дослідженню методів машинного навчання та реалізації моделі машинного навчання дерева рішень в задачі пошуку клонів у програмному коді. У роботі також проводиться аналіз вже існуючих підходів машинного навчання для виявлення дублікатів у програмному коді. У ході порівняння були визначені переваги та недоліки кожного алгоритму, а результати зведено до відповідних таблиць порівнянь. У результаті аналізу було визначено, що найбільш оптимальним як з точки зору точності, так і з точки зору реалізації являється метод на основі дерева рішень, що дає найкращий результат в задачі пошуку клонів у програмному коді.
Результатом роботи є створена модель, що з точністю більше 99 % класифікує клоновані та не клоновані коди на автоматично згенерованому датасеті за мінімальний проміжок часу. Дана система має ряд відкритих для майбутніх досліджень питань, перелік яких представлений у даній роботі. Запропонована модель має наступні шляхи подальшого розвитку:
– розпізнавання клонів, що переписані з однієї мови програмування на іншу;
– виявлення вразливостей в коді;
– покращення роботи моделі за допомогою створення більш універсальних датасетів.
Перспективність роботи полягає в навчанні моделі дерева рішень для точного та швидкого виявлення клонів коду, що потенційно може мати широке використання для виявлення плагіату як у навчальних закладах, так і в IT-компаніях.
Посилання
- 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
- Code Duplicate. Available at: https://t2informatik.de/en/smartpedia/code-duplicate/
- Roy, C. K., Cordy, J. R. (2007). A Survey on Software Clone Detection Research. Computer and Information Science, 115 (541), 115.
- 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
- 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
- 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
- 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
- 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
- Kundel, D. (2020). ASTs – What are they and how to use them. Available at: https://www.twilio.com/blog/abstract-syntax-trees
- 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
- BigCloneBench. Available at: https://github.com/clonebench/BigCloneBench
- 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
- Decision Tree Classification Algorithm. Available at: https://www.javatpoint.com/machine-learning-decision-tree-classification-algorithm
- Decision Tree Classifier. Available at: https://www.sciencedirect.com/topics/computer-science/decision-tree-classifier
- Bondarenko, O. (2021). Matrytsia nevidpovidnostei. Available at: https://oleghbond.medium.com/матриця-невідповідностей-329e7e4bf05e
- 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
- Scikit-Learn. Available at: https://scikit-learn.org/stable/
##submission.downloads##
Опубліковано
Як цитувати
Номер
Розділ
Ліцензія
Авторське право (c) 2022 Tetiana Kaliuzhna, Yevhenii Kubiuk
Ця робота ліцензується відповідно до Creative Commons Attribution 4.0 International License.
Закріплення та умови передачі авторських прав (ідентифікація авторства) здійснюється у Ліцензійному договорі. Зокрема, автори залишають за собою право на авторство свого рукопису та передають журналу право першої публікації цієї роботи на умовах ліцензії Creative Commons CC BY. При цьому вони мають право укладати самостійно додаткові угоди, що стосуються неексклюзивного поширення роботи у тому вигляді, в якому вона була опублікована цим журналом, але за умови збереження посилання на першу публікацію статті в цьому журналі.