Аннотация:
В настоящее время практически любое программное обеспечение (ПО)
содержит избыточный дублированный код (клоны), что приводит ко множественным
проблемам на этапе поддержки такого ПО. За последние годы для решения проблемы
дублирования было предложено множество различных подходов к обнаружению клонов,
но большинство из них не рассматривают семантические свойства
исходного кода ПО.
В данной работе предлагается усилить классический подход к обнаружению
клонов на основе анализа абстрактных синтаксических деревьев (АСД)
за счет использования дополнительной информации о слайсах АСД по переменным
программы. Это позволяет эффективно обнаруживать разорванные (gapped) и
переплетенные (intertwined) клоны — результаты предварительных экспериментов
подтверждают применимость предложенного подхода на практике.
Ключевые слова:обнаружение клонов, слайсинг над деревьями, шаблоны над деревьями, поддержка программного обеспечения.