Сборники трудов ИСП РАН


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

Севак Саргсян (ИСП РАН, Москва), Шамиль Курмангалеев (ИСП РАН, Москва), Андрей Белеванцев (ИСП РАН, Москва), Айк Асланян (ИСП РАН, Москва), Артем Балоян (ИСП РАН, Москва)

Аннотация

В статье обсуждаются существующие методы поиска семантически сходных участков кода (клонов). Анализируются недостатки каждого метода, на основе чего предлагается новый метод поиска клонов кода и описывается архитектура инструмента для языков C/C++ на основе компиляторной инфраструктуры LLVM, в которой реализован предложенный метод. Работу инструмента можно разделить на два основных этапа. На первом этапе программа компилируется в промежуточное представление LLVM  компилятором Clang. По этому представлению строится граф зависимостей программы (Program Dependence Graph – PDG) для каждой единицы компиляции. На втором этапе производится анализ  поиска клонов кода в построенных графах. В инструменте существует отдельный этап тестирования алгоритмов, который будет подключен при запуске инструмента в режиме тестирования. Это дает возможность автоматической генерации тестов и проверки точности реализованных алгоритмов.

Ключевые слова

семантический анализ, поиск клонов, PDG, LLVM

Издание

Труды Института системного программирования РАН, том 27, вып. 1, 2015, стр. 39-50.

ISSN 2220-6426 (Online), ISSN 2079-8156 (Print).

DOI: 10.15514/ISPRAS-2015-27(1)-3

Полный текст статьи в формате pdf Вернуться к содержанию тома