Лаборатория прикладного анализа программ

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

Одни исследовательские проекты связаны с собственными нуждами JetBrains, другие посвящены более широким темам. Кроме того, мы занимаемся и другими вещами: например, проектируем и реализуем новые возможности языка программирования Kotlin.

Проекты

Kotlin Compiler Fuzzing

В ходе этого проекта мы изучаем приложения для фаззинг-тестирования компилятора Kotlin. В ходе предыдущего исследования мы нашли в компиляторе немало багов. Сейчас мы ищем возможность включить в фаззинг-тестирование еще больше компонентов компилятора и встроить эти тесты в QA-пайплайн.

Java Bytecode Analysis

Kex — платформа для анализа байт-кода Java. Она поддерживает загрузку байт-кода, построение промежуточной модели и ее анализ с помощью SMT-решателей. В настоящее время основная задача Kex — генерация тестов, но в будущем мы планируем использовать эту платформу и для других целей: воспроизведение условий сбоя, анализ программ, устранение ошибок.

Валидация LLM-кода с помощью дифференциального тестирования: согласованность любой ценой

В ходе проекта мы стремимся понять, является ли внутренняя согласованность кода, сгенерированного LLM, надежным показателем его качества. Результат работы LLM является внутренне согласованным, если по одному и тому же запросу LLM генерирует решения, отвечающие заданному определению согласованности. В рамках проекта мы используем дифференциальное тестирование для измерения согласованности: все сгенерированные решения должны вести себя одинаково на заданном или сгенерированном наборе тестов. Для генерации тестов мы применяем Kex в режиме генерации тестов.

Преобразование Gradle в Gradle KTS с помощью LLM: это вообще работает?

Считается, что LLM успешно преобразуют код на одном языке в код на другом. Мы хотим понять, так ли это в случае преобразования конфигураций сборки Gradle из .gradle в .gradle.kts. Это особенно актуально для преобразования из старого API Groovy для использования в новом API Kotlin. Чтобы выяснить это, мы сравниваем абстрактные конфигурации, извлеченные из Gradle с помощью инструментов IntelliJ Platform, до и после преобразования.

Состав

Марат Ахин
Руководитель лаборатории
Азат Абдуллин
Старший исследователь
Нияз Нигматуллин
Исследователь
Сергей Харитонцев-Беглов
Младший исследователь
Рустам Садыков
Младший исследователь
Кристина Трофимова
Младшая исследовательница

Бывшие сотрудники

Михаил Беляев
Владимир Итцыксон
Валентин Соболь
Даниил Степанов