Abstract

Nowadays most of software contains code duplication that leads to serious problems in software maintenance. A lot of different clone detection approaches have been proposed over the years to deal with this problem, but almost all of them do not consider semantic properties of the source code. We propose to reinforce traditional tree-based clone detection algorithms by using additional information about variable slices. This allows to find intertwined/gapped clones on variables; preliminary evaluation confirms applicability of our approach to real-world software.

Highlights

  • Объемы исходного кода программное обеспечение (ПО) постоянно растут – так, кодовая база проектов с открытым исходным кодом удваивается каждые 14 месяцев [1]

  • Это позволяет свести задачу обнаружения похожих абстрактного синтаксического дерева программы (АСД) к задаче поиска близких характеристических векторов в метрическом пространстве

  • This allows to find intertwined/gapped clones on variables; preliminary evaluation confirms applicability of our approach to real-world software

Read more

Summary

Введение

Объемы исходного кода ПО постоянно растут – так, кодовая база проектов с открытым исходным кодом удваивается каждые 14 месяцев [1]. Одной из основных причин столь быстрого роста является активное использование программирования в стиле Копировать-Вставить (Copy-and-Paste Programming), которое и приводит к чрезмерному дублированию кода, что, в свою очередь, усложняет поддержку такого ПО [2]. Дублирование кода означает, что одна и та же (или близкая) функциональность реализована в нескольких местах ПО, и при внесении изменений в эту функциональность необходимо корректно применить их ко всем копиям-клонам. Чтобы можно было избежать возникновения подобных трудностей, в последние годы большое внимание уделяется обнаружению клонов. Данная область программной инженерии изучает способы обнаружения интересных клонов для того, чтобы позднее их можно было устранить при помощи рефакторинга или других подходов, улучшая тем самым качество и упрощая поддержку ПО. Это позволяет обнаруживать дублирование кода с учетом влияния отдельных переменных, то есть эффективно обнаруживать переплетенные или разорванные по определенным переменным клоны. Результаты проведенных экспериментов свидетельствуют о том, что данный подход улучшает результаты обнаружения клонов за счет введения незначительных накладных расходов на слайсинг, которые не снижают применимости подхода к большим программным проектам

Клоны в программном обеспечении
Предлагаемый подход
Слайсинг над деревьями
Обнаружение клонов
Экспериментальные результаты
Другие работы в этой области
Заключение
Full Text
Paper version not known

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call

Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.