В докладе рассматривается задача поиска дефектов в программных системах при помощи статического анализа исходного кода. Статический анализ - популярный инструмент обнаружения критических дефектов и уязвимостей безопасности, не выявляемых обычным тестированием. Основным ограничением статических анализаторов являются высокие требования к вычислительным ресурсам, в результате чего анализ проектов с миллионами строк кода может занимать многие часы.
В работе описаны методы ускорения работы такого анализатора: инкрементальный анализ, ленивый анализ и кэширование заголовочных файлов. Данные методы позволяют существенно ускорить анализ как при выполнении на сервере, так и непосредственно на компьютере разработчика. В результате становится возможным интерактивный анализ - обновление результатов анализа после каждого изменения исходного файла в интегрированной среде разработки. Время обновления составляет в среднем не более 0.5с, что позволяет обнаруживать и исправлять критические уязвимости еще на стадии написания исходного кода. В итоге статический анализ из инструмента тестирования превращается в инструмент разработки. Описанные методы ускорения статического анализа реализованы в коммерческом программном продукте KlocworkInsight.
|