Аннотация:
В статье представлен метод поиска утечек памяти и других схожих ресурсов в статическом анализаторе Svace. Формулируются требования к статическому анализатору, представляющие стоящую за Svace философию, кратко описывается основная инфраструктура анализа на основе межпроцедурного символьного выполнения с объединением состояний и показывается, как ее можно применить для поиска утечек. Описываются атрибуты, которые необходимо вычислить в ходе анализа, демонстрируется, как они вычисляются, как используются спецификации функций выделения и освобождения памяти, а также как учитываются участки памяти, выходящие из-под контроля анализатора. Предлагается способ учета отсутствующих в исходном коде ограничений на выделение и освобождение памяти с помощью создания искусственных функций. Представляются экспериментальные результаты работы метода на наборе тестов Juliet и открытом пакете Binutils, показывающие жизнеспособность предлагаемых идей.
Ключевые слова:
статический анализ, символьное выполнение, утечки памяти, чувствительность к путям, анализ потока данных, анализ указателей.