Труды института системного программирования РАН
RUS  ENG    ЖУРНАЛЫ   ПЕРСОНАЛИИ   ОРГАНИЗАЦИИ   КОНФЕРЕНЦИИ   СЕМИНАРЫ   ВИДЕОТЕКА   ПАКЕТ AMSBIB  
Общая информация
Последний выпуск
Архив

Поиск публикаций
Поиск ссылок

RSS
Последний выпуск
Текущие выпуски
Архивные выпуски
Что такое RSS



Труды ИСП РАН:
Год:
Том:
Выпуск:
Страница:
Найти






Персональный вход:
Логин:
Пароль:
Запомнить пароль
Войти
Забыли пароль?
Регистрация


Труды института системного программирования РАН, 2015, том 27, выпуск 2, страницы 53–64
DOI: https://doi.org/10.15514/ISPRAS-2015-27(2)-4
(Mi tisp122)
 

Эта публикация цитируется в 2 научных статьях (всего в 2 статьях)

Анализ сущностей программ на языках Си/Си++ и связей между ними для понимания программ

А. А. Белеванцев, Е. А. Велесевич

Институт системного программирования РАН
Список литературы:
Аннотация: В статье рассматривается инструмент статического анализа программ, определяющий сущности программы на языке Си или Си++, их метрики и связи между ними. Сущностями программы являются файлы, функции, классы, методы и т.п., а связями – вызовы, наследование, чтение/запись глобальных переменных, включение, агрегация. Необходимость построения такого инструмента возникает в связи с тем, что для широкого круга задач понимания программ основой для построения решения является автоматическое извлечение необходимой информации о программе из ее исходных кодов. Инструмент должен поддерживать все конструкции языков Си и Си++ и масштабироваться для анализа реальных программных систем в миллионы строк исходного кода.
Статья посвящена методам построения такого инструмента на основе открытой компиляторной инфраструктуры LLVM[1]. Для разбора текстов программ используется промышленный компилятор Clang[2], а для последующего анализа – собственный инструмент на основе LLVM, обеспечивающий консолидацию информации обо всей программе. Так как окончательный анализ выполняется на уровне внутреннего представления (биткода) LLVM, то необходимо обеспечить сохранение в файлах с этим представлением дополнительной информации уровня исходного кода, теряющейся при изначальной трансляции. Для этого, а также для поддержки разнообразных диалектов Си и Си++, было выполнено более 400 доработок компилятора Clang[2]. В анализаторе уровня биткода центральной частью является компоновщик, задачей которого является объединение информации об одних и тех сущностях, участвующих в сборке различных компонент программной системы (например, библиотеки и приложения, ее использующего). Построенные с использованием компоновщика связи между сущностями позволяют точнее отследить отношения между компонентами всей системы. В статье также представляются результаты тестирования инструмента на коде ОС Android.
Ключевые слова: понимание программ, LLVM, статический анализ, метрики исходного кода.
Финансовая поддержка Номер гранта
Российский фонд фундаментальных исследований 14-01-31363
Работа поддержана грантом РФФИ 14-01-31363 мол_а.
Реферативные базы данных:
Тип публикации: Статья
Образец цитирования: А. А. Белеванцев, Е. А. Велесевич, “Анализ сущностей программ на языках Си/Си++ и связей между ними для понимания программ”, Труды ИСП РАН, 27:2 (2015), 53–64
Цитирование в формате AMSBIB
\RBibitem{BelVel15}
\by А.~А.~Белеванцев, Е.~А.~Велесевич
\paper Анализ сущностей программ на языках Си/Си++ и связей между ними для понимания программ
\jour Труды ИСП РАН
\yr 2015
\vol 27
\issue 2
\pages 53--64
\mathnet{http://mi.mathnet.ru/tisp122}
\crossref{https://doi.org/10.15514/ISPRAS-2015-27(2)-4}
\elib{https://elibrary.ru/item.asp?id=23827846}
Образцы ссылок на эту страницу:
  • https://www.mathnet.ru/rus/tisp122
  • https://www.mathnet.ru/rus/tisp/v27/i2/p53
  • Эта публикация цитируется в следующих 2 статьяx:
    Citing articles in Google Scholar: Russian citations, English citations
    Related articles in Google Scholar: Russian articles, English articles
    Труды института системного программирования РАН
     
      Обратная связь:
     Пользовательское соглашение  Регистрация посетителей портала  Логотипы © Математический институт им. В. А. Стеклова РАН, 2024