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


Использование анализа недостижимого кода в статическом анализаторе для поиска ошибок в исходном коде программ

Р.Р. Мулюков (ИСП РАН, Москва, Россия)
А.Е. Бородин (ИСП РАН, Москва, Россия)

Аннотация

В статье описывается поиск недостижимого кода в исходном коде программ, написанных на языках Си и Си++. Приведена классификация видов недостижимого кода. Описаны цели, достигаемые поиском недостижимого кода: выдача предупреждений о возможных ошибках в анализируемой программе и улучшение точности других анализов. Формально поставлены три задачи анализа потока данных: анализ интервалов значений, анализ выколотой точки, предикатный анализ. Решения этих задач применены для поиска инвариантных условий ветвления программы. Показаны особенности поиска недостижимого кода в статических анализаторах, предназначенных для поиска ошибок. Отмечены общие ситуации, в которых нет необходимости сообщать пользователю о найденном недостижимом коде. Описанные алгоритмы реализованы в статическом инструменте Svace, разрабатываемом в ИСП РАН. Оценка результатов детекторов произведена для исходного кода операционных систем Android-5.02 и Tizen-2.3 в виде количественного сравнения предупреждений, выданных каждым из анализов, и их пересечения между собой.

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

статический анализ, недостижимый код, анализ потока данных, Svace, поиск ошибок

Издание

Труды Института системного программирования РАН, том 28, вып. 5, 2016, стр. 145-158.

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

DOI: 10.15514/ISPRAS-2016-28(5)-9

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