Устойчивая алгоритмическая привязка к произвольному участку кода программы
Автор: Головешкин Алексей Валерьевич, Михалкович Станислав Станиславович
Журнал: Программные системы: теория и приложения @programmnye-sistemy
Рубрика: Математические основы программирования
Статья в выпуске: 1 (52) т.13, 2022 года.
Бесплатный доступ
При работе над задачей программист наиболее активно взаимодействует с~конечным набором фрагментов кода. Информация об их расположении важна для быстрого перемещения между ними, для других разработчиков и как разновидность документации. Интегрированные среды разработки (IDE) позволяют связывать метки с~участками кода, просматривать список меток и использовать их для быстрой навигации, однако связь между меткой и помеченным местом может теряться при редактировании кода, особенно при изменении за пределами IDE. В предыдущих работах авторами предлагается интегрируемый в~IDE инструмент, позволяющий устойчиво к~изменению кода помечать крупные синтаксические сущности программы («привязываться» к~ним). Описание помечаемого элемента строится по~абстрактному синтаксическому дереву (АСД) программы и используется для алгоритмического поиска этого элемента в~отредактированном позднее коде. Поиск осуществляется с~успешностью от 99 до 100.. Целью настоящей работы является устойчивая алгоритмическая привязка к~произвольному участку кода. Для привязки к~однострочному фрагменту кода предложены расширение модели, описывающей помечаемый фрагмент, и дополнительный алгоритм поиска. Введена необходимая формализация и предложен алгоритм встраивания в~АСД узлов, соответствующих многострочным фрагментам; показано, что в~результате такого встраивания не нарушается корректность АСД. В~коде трёх крупных проектов на~языке C. произведены привязки к~случайно выбранным строкам. Ручной проверкой результатов поиска этих строк в~отредактированном коде подтверждено, что привязка устойчива к~редактированию кода.
Разметка кода, алгоритмическая привязка к коду, разработка программного обеспечения, абстрактное синтаксическое дерево, оценка похожести кода
Короткий адрес: https://sciup.org/143178555
IDR: 143178555
Список литературы Устойчивая алгоритмическая привязка к произвольному участку кода программы
- Schr¨oer M., Koschke R. Recording, visualising and understanding developer programming behaviour, 2021 IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER) (11 May 2021, Honolulu, HI, USA).– 2021.– pp. 561–566. https://doi.org/10.1109/SANER50967.2021.00066
- Ciborowska A., Chakarov A., Pandita R. Contemporary COBOL: developers’ perspectives on defects and defect location, 2021 IEEE International Conference on Software Maintenance and Evolution (ICSME) (27 Sept.–1 Oct. 2021, Luxembourg).– 2021.– pp. 227–238. https://doi.org/10.1109/ICSME52107.2021.00027
- Parnin C., Rugaber S. Resumption strategies for interrupted programmingtasks // Software Quality Journal.– 2011.– Vol. 19.– No. 1.– pp. 5–34. https://doi.org/10.1007/s11219-010-9104-9
- Badreddin O., Khandoker R., Forward A., Masmali O., Lethbridge T. C. A decade of software design and modeling: a survey to uncover trends of the practice // Proceedings of the 21th ACM/IEEE International Conference on Model Driven Engineering Languages and Systems, MODELS’18 (14–19 October 2018, Copenhagen, Denmark), New York, NY:ACM.– 2018.– ISBN 978-1-4503-4949-9.– pp. 245–255. https://doi.org/10.1145/3239372.3239389
- Storey M.-A., Ryall J., Singer J., Myers D., Cheng L.-T., Muller M. How software developers use tagging to support reminding and refinding // IEEE Trans. Softw. Eng.– 2009.– Vol. 35.– No. 4.– pp. 470–483. https://doi.org/10.1109/TSE.2009.15
- Guzzi A., Hattori L., Lanza M., Pinzger M., A. van Deursen Collective code bookmarks for program comprehension, 2011 IEEE 19th International Conference on Program Comprehension (22–24 June 2011, Kingston, ON, Canada).– 2011.– pp. 101–110. https://doi.org/10.1109/ICPC.2011.19
- Goloveshkin A. V., Mikhalkovich S. S. Tolerant parsing with a special kind of “Any” symbol: the algorithm and practical application // Proc. ISP RAS.– 2018.– Vol. 30.– No. 4.– pp. 7–28. https://doi.org/10.15514hM/tItNSpP:/R/AmSi.-m20a1t8h-n3e0t(.4r)u-/1tisp344
- Goloveshkin A. V. Tolerant parsing using modified LR(1) and LL(1) algorithms with embedded “Any” symbol // Proc. ISP RAS.– 2019.– Vol. 31.– No. 3.– pp. 7–28. https://doi.org/10.15514hM/tItNSpP:/R/AmSi.-m20a1t9h-n3e1t(.3r)u-/1tisp418
- Goloveshkin A., Mikhalkovich S. Using improved context-based code description for robust algorithmic binding to changing code // Procedia Computer Science.– 2021.– Vol. 193.– pp. 239–249. https://doi.org/10.1016/j.procs.2021.10.024
- Головешкин А. В., Михалкович С. С. Привязка к произвольному участку программы в задаче разметки программного кода // Современные информационные технологии: тенденции и перспективы развития, Материалы XXVI научной конференции (18-–19 апреля 2019 г., Южный федеральный университет, Ростов-на-Дону, Россия), Ростов-на-Дону–Таганрог:Южный федеральный университет.– 2019.– ISBN 978-5-9275-3139-4.– с. 86–89.
- Фуксман А. Л. Технологические аспекты создания программных систем.– М.: Статистика.– 1979.
- Kiczales G., Hilsdale E., Hugunin J., Kersten M., Palm J., Griswold W. G. An overview of AspectJ // ECOOP 2001 — Object-Oriented Programming, 15th European Conference (18–22 June 2001, Budapest, Hungary), LNCS.– vol. 2072, Berlin:Springer-Verlag.– 2001.– ISBN 978-3-540-45337-6.– pp. 327–354. https://doi.org/10.1007/3-540-45337-7_18
- Schaefer I., Bettini L., Bono V., Damiani F., Tanzarella N. Delta-oriented programming of software product lines // Software Product Lines: Going Beyond, 14th International Conference SPLC 2010 (13–17 September 2010, Jeju Island, South Korea), LNCS.– vol. 6287, Berlin:Springer-Verlag.– 2010.– ISBN 978-3-642-15578-9.– pp. 77–91. https://doi.org/10.1007/978-3-642-15579-6_6
- Apel S., K¨astner C., Lengauer C. Language-independent and automated software composition: the FeatureHouse experience // IEEE Trans. Softw. Eng.– 2013.– Vol. 39.– No. 1.– pp. 63–79. https://doi.org/10.1109/TSE.2011.120
- Kanai S. Customize code generation using IBM Rational Rhapsody for C++: IBM Support. hUtRtpLs://www.ibm.com/support/pages/customize-code-generation-using-ibm-rational-rhapsody-c
- Калинин С. Ю., Колоколов И. А., Литвиненко А. Н. Применение концепций АОП в разработке расширяемых приложений // Известия Южного федерального университета. Технические науки.– 2010.– Т. 103.– №2.– с. 58–68. [РИНЦ]
- Малеванный М. С., Михалкович С. С. Поддержка среды программирования для навигации по аспектам программного кода // Современные информационные технологии: тенденции и перспективы развития, Материалы конференции (17–18 апреля 2014 г., Южный федеральный университет, Ростов-на-Дону, Россия), Ростов-на-Дону:Южный федеральный университет.– 2014.– ISBN 978-5-9275-1227-0.– с. 275–276.
- Malevannyy M. S., Mikhalkovich S. S. Context-based model for concern markup of a source code // Proc. ISP RAS.– 2016.– Vol. 28.– No. 2.– pp. 63–78. https://doi.org/10.15514hM/tItNSpP:/R/AmSi.-m20a1t6h-n2e8t(.2r)u-/4tisp20
- Malevannyy M. S., Mikhalkovich S. S. Robust binding to syntactic elements in a changing code // Proceedings of the 12th Central and Eastern European Software Engineering Conference in Russia, CEE-SECR’16 (28–29 October 2016, Moscow, Russia), New York, NY, USA:ACM.– 2016.– ISBN 978-1-4503-4884-3.– 8 pp. https://doi.org/10.1145/3022211.3022225
- Roy C. K., Cordy J. R., Koschke R. Comparison and evaluation of code clone detection techniques and tools: a qualitative approach // Science of Computer Programming.– 2009.– Vol. 74.– No. 7.– pp. 470–495. https://doi.org/10.1016/j.scico.2009.0
- Rattan D., Bhatia R., Singh M. Software clone detection: a systematic review // Information and Software Technology.– 2013.– Vol. 55.– No. 7.– pp. 1165–1199. https://doi.org/10.1016/j.infsof.2013.01.008
- Walker A., Cerny T., Song E. Open-source tools and benchmarks for code-clone detection: past, present, and future trends // SIGAPP Appl. Comput. Rev.– 2019.– Vol. 19.– No. 4.– pp. 28–39. https://doi.org/10.1145/3381307.3381310
- Novak M., Joy M., Kermek D. Source-code similarity detection and detection tools used in academia: a systematic review // ACM Trans. Comput. Educ.– 2019.– Vol. 19.– No. 3, 27.– 37 pp. https://doi.org/10.1145/3313290
- Cheers H., Lin Y., Smith S.P. Evaluating the robustness of source code plagiarism detection tools to pervasive plagiarism-hiding modifications // Empirical Software Engineering.– 2021.– Vol. 26, 83.– 62 pp. https://doi.org/10.1007/s10664-021-09990-4
- Luan S., Yang D., Barnaby C., Sen K., Chandra S. Aroma: code recommendation via structural code search // Proc. ACM Program. Lang.– 2019.– Vol. 3.– No. OOPSLA, 152.– 28 pp. https://doi.org/10.1145/3360578
- Dotzler G., Philippsen M. Move-optimized source code tree differencing // Proceedings of the 31st IEEE/ACM International Conference on Automated Software Engineering, ASE’16 (3–7 September 2016, Singapore), New York, NY, USA:ACM.– 2016.– ISBN 978-1-4503-3845-5.– pp. 660–671. https://doi.org/10.1145/2970276.2970315
- Frick V., Grassauer T., Beck F., Pinzger M. Generating accurate and compact edit scripts using tree differencing, 2018 IEEE International Conference on Software Maintenance and Evolution (ICSME) (23–29 Sept. 2018, Madrid, Spain).– pp. 264–274. https://doi.org/10.1109/ICSME.2018.00036
- Kim M., Notkin D., Grossman D., Wilson G. Identifying and summarizing systematic code changes via rule inference // IEEE Transactions on Software Engineering.– 2013.– Vol. 39.– No. 1.– pp. 45–62. https://doi.org/10.1109/TSE.2012.16
- Ragkhitwetsagul C., Krinke J., Clark D. A comparison of code similarity analysers // Empirical Software Engineering.– 2018.– Vol. 23.– No. 4.– pp. 2464–2519. https://doi.org/10.1007/s10664-017-9564-7
- Brody S., Alon U., Yahav E. A structural model for contextual code changes // Proc. ACM Program. Lang.– 2020.– Vol. 4.– No. OOPSLA, 215.– 28 pp. https://doi.org/10.1145/3428283
- Asaduzzaman M., Roy C. K., Schneider K. A., Penta M. D. LHDiff: a language-independent hybrid approach for tracking source code lines // 2013 IEEE International Conference on Software Maintenance (22–28 Sept. 2013, Eindhoven, Netherlands).– 2013.– ISBN 978-0-7695-4981-1.– pp. 230–239. https://doi.org/10.1109/ICSM.2013.34 ↑8
- Moonen L. Generating robust parsers using island grammars // Proceedings of the 8th Working Conference on Reverse Engineering (2–5 Oct. 2001, Stuttgart, Germany), Washington, DC, USA:IEEE Computer Society.– 2001.– ISBN 0-7695-1303-4.– pp. 13–22. https://doi.org/10.1109/WCRE.2001.957806
- Van Den Brand M., Sellink M.P. A., Verhoef C. Obtaining a COBOL grammar from legacy code for reengineering purposes // Proceedings of the 2nd International Conference on Theory and Practice of Algebraic Specifications (25–26 September 1997, Amsterdam, The Netherlands), eWiC, Swindon, UK:BCS Learning & Development Ltd..– 1997.– ISBN 3-540-76228-0.– pp. 1–16. https://doi.org/10.14236/EWIC/AL1997.6
- Oliver J., Cheng C., Chen Y. TLSH – a locality sensitive hash // Proceedings of the 2013 Fourth Cybercrime and Trustworthy Computing Workshop, CTC’13 (21–22 Nov. 2013, Sydney, NSW, Australia), Washington, DC, USA:IEEE Computer Society.– 2013.– pp. 7–13. https://doi.org/10.1109/CTC.2013.9
- Левенштейн В. И. Двоичные коды с исправлением выпадений, вставок и замещений символов // Доклады Академии Наук СССР.– 1965.– Т. 163.– №4.– с. 845–848. MhttNp://mi.mathnet.ru/dan31411