RUS  ENG
Полная версия
ЖУРНАЛЫ // Труды института системного программирования РАН // Архив

Труды ИСП РАН, 2025, том 37, выпуск 6(3), страницы 109–120 (Mi tisp1093)

Devirtualization-based Python static analysis

[Статический анализ языка Python с использованием девиртуализации]

A. L. Galustova, K. I. Vihliancevab, A. E. Borodina, A. A. Belevancevac

a Ivannikov Institute for System Programming of the RAS
b Moscow Institute of Physics and Technology (State University)
c Lomonosov Moscow State University, Faculty of Computational Mathematics and Cybernetics

Аннотация: В статье предлагается подход к статическому анализу программ на языке Python на основе низкоуровневого внутреннего представления и девиртуализации, который позволяет выполнять межпроцедурный и межмодульный анализ. Подход применим к программам, не содержащим ручных аннотаций типов, и может быть использован для поиска сложных ошибок, которые не ищутся популярными инструментами на основе анализа АСД. Представление для анализа строится по байткоду CPython, затем в результате работы межпроцедурного алгоритма девиртуализации разрешаются вызовы. Предлагаемый подход к девиртуализации уже реализован для языков C, C++, Java, Go и показал хорошие результаты без необходимости изменения существующих детекторов. После адаптации алгоритма для языка Python доля истинных срабатываний детекторов для Python составила от 60% до 96%. Таким образом, изначально предложенный для статически типизированных языков алгоритм оказался применимым к языку Python.

Ключевые слова: статический анализ, язык программирования Python, девиртуализация

Язык публикации: английский

DOI: 10.15514/ISPRAS-2025-37(6)-39



© МИАН, 2026