Розробка алгоритму пошуку дублікатів в програмному коді на базі абстрактного синтаксичного дерева

Автор(и)

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

DOI:

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

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

виявлення клонів, абстрактне синтаксичне дерево, AST, хешування, пошук вразливостей, помилкові сигнали

Анотація

Об'єктом дослідження даної роботи є алгоритм пошуку дублікатів в програмному коді на базі абстрактного синтаксичного дерева (Abstract Syntaxes TreeAST). Головними задачами, що вирішувалися в рамках даного дослідження, є виявлення дублікатів коду та пошук вразливостей в програмному коді.

Отримані результати показали, що запропонований алгоритм є стійким до клонів типу 1 та 2, що означає його ефективність у виявленні схожих фрагментів коду з ідентичним або варіативним текстом. Проте, для клонів типу 3 та 4, алгоритм може показувати меншу ефективність через зміну структури AST для цих типів клонів.

Експериментальні дослідження запропонованого алгоритму показали, що алгоритм може виявляти співпадіння між непов'язаними файлами через наявність типових ланцюжків AST, що присутні у багатьох програмах. Це може призводити до певного рівня помилкових сигналів (False-Positive) у виявленні дублікатів.

Тестування алгоритму в задачі пошуку вразливостей показало, що:

  1. Найкраще розпізнавання спостерігається для вразливості «SQL-ін'єкція», але вона також має найбільшу кількість помилкових сигналів.
  2. Вразливості «виток пам'яті» та «розіменування нульового вказівника» розпізнаються з однаковою ефективністю та помилковими сигналами.
  3. «Переповнення буферу» має найнижчий показник розпізнавання, але меншу кількість помилкових сигналів порівняно з «SQL-ін'єкцією».

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

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

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

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

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

Кандидат технічних наук

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

Посилання

  1. Koschke, R. (2007). Survey of research on software clones. In Dagstuhl Seminar Proceedings. Schloss Dagstuhl-Leibniz-Zentrum für Informatik. doi: https://doi.org/10.4230/DagSemProc.06301.13
  2. Kim, M., Bergman, L., Lau, T., Notkin, D. (2004). An ethnographic study of copy and paste programming practices in OOPL. Proceedings. 2004 International Symposium on Empirical Software Engineering. ISESE'04, 83–92. doi: https://doi.org/10.1109/isese.2004.1334896
  3. Ain, Q. U., Butt, W. H., Anwar, M. W., Azam, F., Maqbool, B. (2019). A Systematic Review on Code Clone Detection. IEEE Access, 7, 86121–86144. doi: https://doi.org/10.1109/access.2019.2918202
  4. Kal Viertel, F. P., Brunotte, W., Strüber, D., Schneider, K. (2019). Detecting Security Vulnerabilities using Clone Detection and Community Knowledge. International Conferences on Software Engineering and Knowledge Engineering, 245–324. doi: https://doi.org/10.18293/seke2019-183
  5. Nishi, M. A., Damevski, K. (2018). Scalable code clone detection and search based on adaptive prefix filtering. Journal of Systems and Software, 137, 130–142. doi: https://doi.org/10.1016/j.jss.2017.11.039
  6. Kaliuzhna, T., Kubiuk, Y. (2022). Analysis of machine learning methods in the task of searching duplicates in the software code. Technology Audit and Production Reserves, 4 (2 (66)), 6–13. doi: https://doi.org/10.15587/2706-5448.2022.263235
  7. Singh, M., Sharma, V. (2015). Detection of File Level Clone for High Level Cloning. Procedia Computer Science, 57, 915–922. doi: https://doi.org/10.1016/j.procs.2015.07.509
  8. Yang, Y., Ren, Z., Chen, X., Jiang, H. (2018). Structural function based code clone detection using a new hybrid technique. 2018 IEEE 42nd annual computer software and applications conference (COMPSAC), 1, 286–291. doi: https://doi.org/10.1109/compsac.2018.00045
  9. NVD. Available at: https://nvd.nist.gov/ Last accessed: 22.07.2023
  10. Li, Z., Zou, D., Xu, S., Ou, X., Jin, H., Wang, S. et al. (2018). VulDeePecker: A Deep Learning-Based System for Vulnerability Detection. Proceedings 2018 Network and Distributed System Security Symposium. doi: https://doi.org/10.14722/ndss.2018.23158
  11. Chrenousov, A., Savchenko, A., Osadchyi, S., Kubiuk, Y., Kostenko, Y., Likhomanov, D. (2019). Deep learning based automatic software defects detection framework. Theoretical and Applied Cybersecurity, 1 (1). doi: https://doi.org/10.20535/tacs.2664-29132019.1.169086
  12. Appel, A. W. (2015). Verification of a Cryptographic Primitive. ACM Transactions on Programming Languages and Systems, 37 (2), 1–31. doi: https://doi.org/10.1145/2701415
Development of an algorithm for code clone detection in source code based on abstract syntax tree

##submission.downloads##

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

2023-08-29

Як цитувати

Куб’юк, Є. Ю., & Кисельов, Г. Д. (2023). Розробка алгоритму пошуку дублікатів в програмному коді на базі абстрактного синтаксичного дерева. Technology Audit and Production Reserves, 4(2(72), 33–36. https://doi.org/10.15587/2706-5448.2023.286472

Номер

Розділ

Інформаційні технології