Details

Title: Анализ инициализированности в языке Kotlin: выпускная квалификационная работа бакалавра: направление 09.03.01 «Информатика и вычислительная техника» ; образовательная программа 09.03.01_02 «Технологии разработки программного обеспечения»
Creators: Динмухаметов Марат Линарович
Scientific adviser: Ахин Марат Халимович
Organization: Санкт-Петербургский политехнический университет Петра Великого. Институт компьютерных наук и технологий
Imprint: Санкт-Петербург, 2022
Collection: Выпускные квалификационные работы; Общая коллекция
Subjects: безопасная инициализация; Kotlin; система типов и эффектов; safe initialization; type-and-effect system
Document type: Bachelor graduation qualification work
File type: PDF
Language: Russian
Level of education: Bachelor
Speciality code (FGOS): 09.03.01
Speciality group (FGOS): 090000 - Информатика и вычислительная техника
DOI: 10.18720/SPBPU/3/2022/vr/vr22-988
Rights: Доступ по паролю из сети Интернет (чтение, печать, копирование)
Record key: ru\spstu\vkr\17143

Allowed Actions:

Action 'Read' will be available if you login or access site from another network Action 'Download' will be available if you login or access site from another network

Group: Anonymous

Network: Internet

Annotation

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

The topic of the thesis work: «Safe initialization analysis for theKotlin language».Thisworkisdevotedtothecreationofanalysisforfindinginitialization errors in the Kotlin language. In this work the followingtasks were solved:•Analysis of existing solutions for finding initialization errors inprogramming languages.•Design of analysis for finding initialization errors in Kotlin.•Creation of a prototype which implements this analysis.•Testing and evaluation of the prototype.The developed approach is based on a type-and-effect system. Itcollects information about the use of fields and methods to find accessto fields that have not yet been initialized.As the result of this work, a prototype of safe initialization analysishas been implemented for Kotlin, which is able to find various initializationerrors.Basedontheresultsoftestingtheprototype,theapproachproposed in this work can be used to find initialization errors in Kotlin.At the same time, the question of its performance remains open.

Document access rights

Network User group Action
ILC SPbPU Local Network All Read Print Download
Internet Authorized users SPbPU Read Print Download
-> Internet Anonymous

Table of Contents

  • 1. Проблема
    • 1.1. Резюме
  • 2. Обзор существующих решений
    • 2.1. Безопасная инициализация в языке Kotlin
    • 2.2. Инициализация в языке Swift
    • 2.3. Подходы, основанные на системах типов и эффектов
      • 2.3.1. Typestate полиморфизм
      • 2.3.2. Маскирующие типы
      • 2.3.3. Freedom before commitment
      • 2.3.4. Безопасная инициализация для языка Scala 3
    • 2.4. Резюме
  • 3. Постановка задачи
  • 4. Дизайн
    • 4.1. Выбор базового подхода для анализа инициализированности в языке Kotlin
    • 4.2. Детали выбранного подхода
      • 4.2.1. Эффекты и потенциалы
      • 4.2.2. Проверка эффектов
      • 4.2.3. Full-construction analysis
      • 4.2.4. Definite assignment
    • 4.3. Проблемы подхода для языка Kotlin
      • 4.3.1. Блоки инициализации
      • 4.3.2. Отложенная инициализация
      • 4.3.3. Extension receivers
      • 4.3.4. Делегаты
    • 4.4. Резюме
  • 5. Создание прототипа
    • 5.1. Система типов и эффектов
    • 5.2. Интеграция в компилятор
      • 5.2.1. Реализация прототипа
    • 5.3. Реализация FCA
    • 5.4. Резюме
  • 6. Тестирование
    • 6.1. Резюме
  • ПРИЛОЖЕНИЕ. ЛИСТИНГИ КОДА ЭФФЕКТОВ И ПОТЕНЦИАЛОВ

Usage statistics

stat Access count: 12
Last 30 days: 0
Detailed usage statistics