Другие журналы
|
научное издание МГТУ им. Н.Э. БауманаНАУКА и ОБРАЗОВАНИЕИздатель ФГБОУ ВПО "МГТУ им. Н.Э. Баумана". Эл № ФС 77 - 48211. ISSN 1994-0408![]()
Реализация межмодульного анализа для языков C и C++ в статическом анализаторе, использующем для анализа исходный код программы
# 09, сентябрь 2015 DOI: 10.7463/0915.0812271
Файл статьи:
![]()
В связи с распространением средств автоматического тестирования возникает необходимость подвергать тщательному автоматизированному тестированию крупные программные системы и комплексы, включая тестирование интерфейсов взаимодействия компонентов системы или комплекса между собой. Целью проводимого исследования является построение метода межпроцедурного межмодульного анализа для языков C и C++, позволяющего выполнять анализ крупных и сложных программных систем, в том числе мультиархитектурных проектов (таких, как ОС Android), а также поддерживать сложные системы сборки проектов. Поскольку выбранный для разработки статический анализатор (Clang Static Analyzer) использует в качестве входных данных непосредственно исходный код программы, для реализации такой возможности необходима разработка специального метода. Данная проблема носит особый характер в связи с особенностями языков C и C++, предполагающих и поощряющих раздельную компиляцию файлов проекта. В данной работе описывается система анализа, построенная для Clang Static Analyzer для поддержки межмодульного анализа, и рассматриваются проблемы, связанные с поддержкой сложных проектов. Также рассматривается задача слияния абстрактных синтаксических деревьев различных транслируемых модулей и связанные с ним проблемы, в частности, обработка конфликтующих определений, поддержка сложных систем сборки и сложных проектов, в т. ч. мультиархитектурных проектов, приведены и разобраны примеры. Рассмотрены как особенности, связанные с особенностями языка (создание специальных методов по требованию, проблемы, связанные с использованием препроцессора), так и ошибки, которые могут быть сделаны разработчиком программы (в т. ч., сознательно). В статье описываются некоторые эвристики, разработанные с целью увеличения скорости слияния синтаксических деревьев. Разработанная система была проверена на исходном коде ОС Android с целью демонстрации её способности обрабатывать проекты высокой сложности. Результирующая система не зависит от используемого метода межпроцедурного анализа и допускает произвольную смену его алгоритмов. Список литературы
Публикации с ключевыми словами: C++, статический анализ, символьное выполнение, межпроцедурный анализ, Clang Static Analyzer, межмодульный анализ Публикации со словами: C++, статический анализ, символьное выполнение, межпроцедурный анализ, Clang Static Analyzer, межмодульный анализ Смотри также: Тематические рубрики: Поделиться:
|
|
||||||||||||||||||||||||||||||||||
|