Целью работы являлась разработка
прототипа динамического анализатора языка С++ и среды для его
тестирования.
В процессе разработки программ
часто возникает ситуация, что небольшие изменения в коде влекут перекомпиляцию значительной
части проекта, а этот процесс может быть достаточно долгим. Из-за этого у
разработчиков часто возникают неудобства.
В связи с этим возникла идея
разработки такого анализатора C++
кода, который ускоряет компиляцию при небольших изменениях исходного текста, производя
синтаксический разбор только тех фрагментов, которые подверглись изменениям. В результате был реализован анализатор, который
сохраняет информацию синтаксического разбора исходного кода (AST) по завершении компиляции и изменяет
его по необходимости, а не создает заново. Это позволяет не компилировать повторно
инвариантную часть кода. При небольших локальных изменениях исходного кода
время перекомпиляции в подавляющем большинстве случаев значительно уменьшается. Для решения этой задачи были
разработаны структуры данных, хранящие информацию о синтаксической структуре
программы, и алгоритмы, выполняющие разбор измененной части кода и зависимых от
нее участков. Был реализован динамический анализатор C++ кода и прототип «интеллектуальной
среды разработки» на базе Qt,
использующей API данного динамического анализатора. Проект реализован на языке С++ с
использованием ООП, STL,
шаблонов, паттернов проектирования, и кроссплатформенных библиотек (boost, Qt). |