Дослідження можливостей вбудованого рефакторингу у мові SWIFT
DOI:
https://doi.org/10.15587/2706-5448.2022.266061Ключові слова:
мова програмування Swift, рефакторинг, відкритий вихідний код, компонент sourcekitАнотація
Об’єктом дослідження у роботі є вбудований механізм рефакторингу у мові програмування Swift. Swift набуває великої популярності за останній час, саме тому з’являється багато нових викликів, пов’язаних із необхідністю здійснювати підтримку та модифікацію вихідного коду, написаного цією мовою програмування. Існуюча проблема полягає в тому, що більш потужний механізм рефакторингу, який може бути застосований до мови Swift, є пропрієтарним і не може використовуватися іншими програмними засобами. Більше того, навіть програмні засоби рефакторингу із закритим вихідним кодом не здатні виконувати більш складні запити.
Для дослідження можливостей розширення вбудованого рефакторингу пропонується дослідити програмну реалізацію компонента sourcekit мови програмування Swift, що відповідає за роботу із «сирим» вихідним кодом, а також реалізувати додавання нової дії з рефакторингу з його використанням. Для виконання плану дослідження було обрано одну дію рефакторингу, що не була присутня в утилітах рефакторингу, а саме додавання реалізації протоколу Equatable. Було розроблено її програмну імплементацію за допомогою компонентів і ресурсів, що надаються в межах компоненту sourcekit. Для перевірки правильності та відповідності умовам розробки було створено та проведено ряд випробувань.
Встановлено, що обидва механізми рефакторингу, які підтримуються мовою програмування Swift, мають обмежений контекст і обмежену зону дії та застосування. Саме тому можливість розширення функціоналу має базуватись не на локальному рівні опрацювання коду, а на верхньому рівні, де можливо поєднати кілька вихідних файлів, що часто відбувається у проєктах. Робота була направлена на розробку власної дії рефакторингу для аналізу та отримання досконалого представлення про переваги та недоліки існуючого компоненту. Як результат, було запропоновано новий підхід до здійснення рефакторингу, що дозволить вирішити описані вище проблеми
Посилання
- Sandoval Alcocer, J. P., Siles Antezana, A., Santos, G., Bergel, A. (2020). Improving the success rate of applying the extract method refactoring. Science of Computer Programming, 195, 102475. https://doi.org/10.1016/j.scico.2020.102475
- Kaur, G., Singh, B. (2017). Improving the quality of software by refactoring. 2017 International Conference on Intelligent Computing and Control Systems (ICICCS), 185–191.
- Saca, M. A. (2017). Refactoring improving the design of existing code. 2017 IEEE 37th Central America and Panama Convention (CONCAPAN XXXVII). doi: https://doi.org/10.1109/concapan.2017.8278488
- Simmonds, J. (2002). A Comparison of Software Refactoring Tools. Available at: https://www.researchgate.net/publication/2946408_A_Comparison_of_Software_Refactoring_Tools
- Chouchen, M., Olongo, J., Ouni, A., Mkaouer, M. W. (2021). Predicting Code Review Completion Time in Modern Code Review. ArXiv. doi: https://doi.org/10.48550/arXiv.2109.15141
- Inoue, K., Roy. C. K. (2021). Code Clone Analysis. Singapore: Springer. doi: https://doi.org/10.1007/978-981-16-1927-4
- Swift Issues. Available at: https://github.com/apple/swift/issues/
- Lacerda, G., Petrillo, F., Pimenta, M. S., Guéhéneuc, Y. (2020). Code Smells and Refactoring: A Tertiary Systematic Review of Challenges and Observations. ArXiv. doi: https://doi.org/10.48550/arXiv.2004.10777
- Swift Local Refactoring. Available at: https://swift.org/blog/swift-local-refactoring/
- Improving Swift Tools with libSyntax. Available at: https://academy.realm.io/posts/improving-swift-tools-with-libsyntax-try-swift-haskin-2017/
##submission.downloads##
Опубліковано
Як цитувати
Номер
Розділ
Ліцензія
Авторське право (c) 2022 Andrii Tkachuk, Bogdan Bulakh
Ця робота ліцензується відповідно до Creative Commons Attribution 4.0 International License.
Закріплення та умови передачі авторських прав (ідентифікація авторства) здійснюється у Ліцензійному договорі. Зокрема, автори залишають за собою право на авторство свого рукопису та передають журналу право першої публікації цієї роботи на умовах ліцензії Creative Commons CC BY. При цьому вони мають право укладати самостійно додаткові угоди, що стосуються неексклюзивного поширення роботи у тому вигляді, в якому вона була опублікована цим журналом, але за умови збереження посилання на першу публікацію статті в цьому журналі.