RUS  ENG
Полная версия
ЖУРНАЛЫ // Вестник Астраханского государственного технического университета. Серия: Управление, вычислительная техника и информатика // Архив

Вестн. Астрахан. гос. техн. ун-та. Сер. управление, вычисл. техн. информ., 2013, номер 2, страницы 66–74 (Mi vagtu273)

КОМПЬЮТЕРНОЕ ОБЕСПЕЧЕНИЕ И ВЫЧИСЛИТЕЛЬНАЯ ТЕХНИКА

Получение типов данных в языках с динамической типизацией для статического анализа исходного кода с помощью универсального классового представления

М. В. Зубов, А. Н. Пустыгин, Е. В. Старцев

Челябинский государственный университет

Аннотация: Предлагается подход, позволяющий получить сведения о типах полей классов для объектно-ориентированных языков программирования с динамической типизацией, где эти сведения явно не указаны. В качестве целевого языка выбран Python. Это необходимо для расширения универсального классового промежуточного представления исходного кода. Используя данные о типах, можно будет выполнять более эффективный анализ, например получение связей агрегирования между классами. Для получения типов полей предлагается подход «утиной типизации», использующийся в Python во время исполнения. Для обоснования этого подхода предложена математическая модель, которая описывает типизацию, не накладывая ограничений на конкретный алгоритм поиска «кандидатов» в типы исследуемых полей. Предложена методика тестирования алгоритма на основе динамического анализа, позволяющая оценить его эффективность. Реализованный алгоритм вместе с методикой были проверены на ведущих крупных Python-проектах с открытым исходным кодом.

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

УДК: 004.41
ББК: 32.973.26-018.2

Поступила в редакцию: 03.04.2013



© МИАН, 2024