Труды института системного программирования РАН
RUS  ENG    ЖУРНАЛЫ   ПЕРСОНАЛИИ   ОРГАНИЗАЦИИ   КОНФЕРЕНЦИИ   СЕМИНАРЫ   ВИДЕОТЕКА   ПАКЕТ AMSBIB  
Общая информация
Последний выпуск
Архив

Поиск публикаций
Поиск ссылок

RSS
Последний выпуск
Текущие выпуски
Архивные выпуски
Что такое RSS



Труды ИСП РАН:
Год:
Том:
Выпуск:
Страница:
Найти






Персональный вход:
Логин:
Пароль:
Запомнить пароль
Войти
Забыли пароль?
Регистрация


Труды института системного программирования РАН, 2017, том 29, выпуск 4, страницы 7–20
DOI: https://doi.org/10.15514/ISPRAS-2017-29(4)-1
(Mi tisp232)
 

Automated type contracts generation in Ruby
[Автоматизированная генерация типовых контрактов для языка Ruby]

N. Y. Viuginovab, V. S. Fondaratovb

a St. Petersburg State University
b JetBrains
Список литературы:
Аннотация: Элегантный синтаксис языка Ruby заметно усложняет поиск ошибок в больших кодовых базах. Статический анализ усложняется специфическими возможностями языка, такими как динамическое создание методов и исполнение строковых выражений. Даже в языках с динамической типизацией информация о типах важна, так как она позволяет улучшить типобезопасность и производить более надёжные статические проверки того, определён ли метод для объекта и передан ли метода корректный набор аргументов. Одним из путей решения проблемы является использование YARD нотаций. Они позволяют задокументировать входные и выходный типы методов или даже декларировать методы, добавляемые динамически. Такие аннотации позволяют улучшить анализ кода и автодополнение. В статье описывается новый подход к генерации типовых аннотаций. Мы отслеживаем непосредственные вызовы метода во время исполнения программы и сохраняем типы аргументов и выходной тип. На основе собранной информации для каждого метода строится неявная типовая аннотация. Каждому автомату сопоставляется конечный автомат, составленный из различных типовых сигнатур метода. К автомату применяется эффективный алгоритм минимизации с целью снизить затраты на хранение и позволяет привести автомат к виду, который может быть легко представлен в виде регулярного выражения. В сгенерированном автомате учитывается только та функциональность метода, которая была покрыта программой, которую исполнил пользователь. Поэтому в подходе предусмотрено объединение автоматов, полученных у разных пользователей с целью увеличения репрезентативности и покрытия функциональности метода.
Ключевые слова: Ruby, динамически типизированные языки, Ruby VM, YARV, сигнатура метода, наследование типов, статический анализ кода.
Реферативные базы данных:
Тип публикации: Статья
Язык публикации: английский
Образец цитирования: N. Y. Viuginov, V. S. Fondaratov, “Automated type contracts generation in Ruby”, Труды ИСП РАН, 29:4 (2017), 7–20
Цитирование в формате AMSBIB
\RBibitem{ViuFon17}
\by N.~Y.~Viuginov, V.~S.~Fondaratov
\paper Automated type contracts generation in Ruby
\jour Труды ИСП РАН
\yr 2017
\vol 29
\issue 4
\pages 7--20
\mathnet{http://mi.mathnet.ru/tisp232}
\crossref{https://doi.org/10.15514/ISPRAS-2017-29(4)-1}
\elib{https://elibrary.ru/item.asp?id=29968640}
Образцы ссылок на эту страницу:
  • https://www.mathnet.ru/rus/tisp232
  • https://www.mathnet.ru/rus/tisp/v29/i4/p7
  • Citing articles in Google Scholar: Russian citations, English citations
    Related articles in Google Scholar: Russian articles, English articles
    Труды института системного программирования РАН
     
      Обратная связь:
     Пользовательское соглашение  Регистрация посетителей портала  Логотипы © Математический институт им. В. А. Стеклова РАН, 2024