Компьютерное обеспечение и вычислительная техника УДК 004.41 ББК 32.973.26-018.2 М. В. Зубов, А. Н. Пустыгин, Е. В. Старцев ПОЛУЧЕНИЕ ТИПОВ ДАННЫХ В ЯЗЫКАХ С ДИНАМИЧЕСКОЙ ТИПИЗАЦИЕЙ ДЛЯ СТАТИЧЕСКОГО АНАЛИЗА ИСХОДНОГО КОДА С ПОМОЩЬЮ УНИВЕРСАЛЬНОГО КЛАССОВОГО ПРЕДСТАВЛЕНИЯ M. <...> Startsev EXTRACTION OF DATA TYPES IN DYNAMIC PROGRAMMING LANGUAGES FOR STATIC ANALYSIS WITH UNIVERSAL CLASS REPRESENTATION Предлагается подход, позволяющий получить сведения о типах полей классов для объектно-ориентированных языков программирования с динамической типизацией, где эти сведения явно не указаны. <...> Это необходимо для расширения универсального классового промежуточного представления исходного кода. <...> Используя данные о типах, можно будет выполнять более эффективный анализ, например получение связей агрегирования между классами. <...> Для обоснования этого подхода предложена математическая модель, которая описывает типизацию, не накладывая ограничений на конкретный алгоритм поиска «кандидатов» в типы исследуемых полей. <...> Предложена методика тестирования алгоритма на основе динамического анализа, позволяющая оценить его эффективность. <...> Реализованный алгоритм вместе с методикой были проверены на ведущих крупных Python-проектах с открытым исходным кодом. <...> To get types of fields the “duck typing” approach is offered; it is used in Python during the runtime. <...> Введение Важную роль в разработке программного обеспечения (ПО) играет статический анализ исходного кода. <...> Для более эффективного анализа было предложено универсальное классовое представление [1]. <...> В языках со статической типизацией, таких как Java или C++, типы указываются в коде. <...> В статье предлагается методика на основе статического анализа, позволяющая определять типы данных до исполнения, рассматривается связанная разработка из проекта PyLint [4]. <...> Под агрегирующим классом будем понимать класс, представляющий в связи агрегации целое. <...> Под агрегируемым классом будем понимать класс, представляющий в связи агрегации часть целого. <...> Пример связи агрегации Для диаграммы классов проекта <...>