Другие журналы

научное издание МГТУ им. Н.Э. Баумана

НАУКА и ОБРАЗОВАНИЕ

Издатель ФГБОУ ВПО "МГТУ им. Н.Э. Баумана". Эл № ФС 77 - 48211.  ISSN 1994-0408

Реализация межмодульного анализа для языков C и C++ в статическом анализаторе, использующем для анализа исходный код программы

# 09, сентябрь 2015
DOI: 10.7463/0915.0812271
Файл статьи: SE-BMSTU...o159.pdf (379.75Кб)
автор: Сидорин А. В.1,2,*

УДК 004.4'2

1 Россия,  МГТУ им. Н.Э. Баумана
2 Россия, Московский исследовательский центр Samsung

В связи с распространением средств автоматического тестирования возникает необходимость подвергать тщательному автоматизированному тестированию крупные программные системы и комплексы, включая тестирование интерфейсов взаимодействия компонентов системы или комплекса между собой. Целью проводимого исследования является построение метода межпроцедурного межмодульного анализа для языков C и C++, позволяющего выполнять анализ крупных и сложных программных систем, в том числе мультиархитектурных проектов (таких, как ОС Android), а также поддерживать сложные системы сборки проектов. Поскольку выбранный для разработки статический анализатор (Clang Static Analyzer) использует в качестве входных данных непосредственно исходный код программы, для реализации такой возможности необходима разработка специального метода. Данная проблема носит особый характер в связи с особенностями языков C и C++, предполагающих и поощряющих раздельную компиляцию файлов проекта. В данной работе описывается система анализа, построенная для Clang Static Analyzer для поддержки межмодульного анализа, и рассматриваются проблемы, связанные с поддержкой сложных проектов. Также рассматривается задача слияния абстрактных синтаксических деревьев различных транслируемых модулей и связанные с ним проблемы, в частности, обработка конфликтующих определений, поддержка сложных систем сборки и сложных проектов, в т. ч. мультиархитектурных проектов, приведены и разобраны примеры. Рассмотрены как особенности, связанные с особенностями языка (создание специальных методов по требованию, проблемы, связанные с использованием препроцессора), так и ошибки, которые могут быть сделаны разработчиком программы (в т. ч., сознательно). В статье описываются некоторые эвристики, разработанные с целью увеличения скорости слияния синтаксических деревьев. Разработанная система была проверена на исходном коде ОС Android с целью демонстрации её способности обрабатывать проекты высокой сложности. Результирующая система не зависит от используемого метода межпроцедурного анализа и допускает произвольную смену его алгоритмов.

Список литературы
  1. Clang Static Analyzer: website. Режим доступа: http://clang-analyzer.llvm.org (дата обращения 12.06.2015).
  2. clang: a C language family frontend for LLVM // The LLVM Project: website. Режим доступа : http://clang.llvm.org ( дата обращения 12.06.2015).
  3. The LLVM compiler infrastructure // The LLVM Project: website. Режим доступа: http://llvm.org (дата обращения 12.06.2015).
  4. Иванников В.П., Белеванцев А.А., Бородин А.Е., Игнатьев В.Н., Журихин Д.М., Аветисян А.И., Леонов М.И. Статический анализатор Svace для поиска дефектов в исходном коде программ // Труды Института системного программирования РАН. 2014. Т . 26, № 1. С . 231-250.
  5. Almossawi A., Lim K., Sinha T. Analysis tool evaluation: Coverity Prevent. Final Report. Pittsburgh, PA: Carnegie Mellon University, 2006. 19 p.
  6. Smith R. Working Draft, Standard for Programming Language C++. ISO/IEC N4296, 2014. 1368 p. Режим доступа: https://isocpp.org/files/papers/n4296.pdf  (дата обращения 01.09.2015).
Поделиться:
 
ПОИСК
 
elibrary crossref ulrichsweb neicon rusycon
 
ЮБИЛЕИ
ФОТОРЕПОРТАЖИ
 
СОБЫТИЯ
 
НОВОСТНАЯ ЛЕНТА



Авторы
Пресс-релизы
Библиотека
Конференции
Выставки
О проекте
Rambler's Top100
Телефон: +7 (915) 336-07-65 (строго: среда; пятница c 11-00 до 17-00)
  RSS
© 2003-2024 «Наука и образование»
Перепечатка материалов журнала без согласования с редакцией запрещена
 Тел.: +7 (915) 336-07-65 (строго: среда; пятница c 11-00 до 17-00)