Laboratorio de análisis aplicado de programas

En el Laboratorio de análisis aplicado de programas intentamos encontrar nuevas técnicas de análisis de programas y adaptar las existentes a los problemas que los desarrolladores encuentran en su día a día.

Algunas de nuestras investigaciones se centran en las necesidades internas de JetBrains, mientras que otros proyectos se centran en casos más generales. También nos gusta hacer otras cosas, como diseñar e implementar nuevas funcionalidades para el lenguaje de programación Kotlin.

Proyectos

Kotlin Compiler Fuzzing

En este proyecto, exploramos las aplicaciones de las pruebas de vulnerabilidad ante datos aleatorios o inesperados para probar el compilador de Kotlin. En un estudio anterior, encontramos bastantes errores en el compilador. Actualmente, trabajamos para ampliar las pruebas de vulnerabilidad ante datos aleatorios o inesperados a más componentes del compilador e incluirlas en el proceso de control de calidad del compilador.

Java Bytecode Analysis

Kex es nuestra plataforma de análisis de código de bytes de Java, que permite cargar código de bytes de Java, construir un modelo intermedio y analizarlo mediante solucionadores SMT. De momento, Kex se centra en la generación de pruebas, pero también estamos barajando usarlo para otras cosas como la reproducción de fallos, el análisis y la reparación de programas.

Validación de código de los LLM mediante pruebas diferenciales: coherencia a toda costa

En este proyecto tratamos de comprender si la autocoherencia es una buena medida de la calidad del código generado por los LLM. Un LLM produce un resultado autocoherente si, ante la misma petición, genera soluciones que cumplen con una definición dada de coherencia. Dentro de este proyecto estamos utilizando pruebas diferenciales para medir la coherencia: todas las soluciones generadas deben comportarse de la misma manera en un conjunto de pruebas determinado o generado. Para generar las pruebas, aplicamos Kex en modo de generación de pruebas.

Conversión de Gradle a Gradle KTS a través de los LLM: ¿realmente funciona?

Se considera que los LLM son buenos para hacer conversiones entre diferentes lenguajes. Queremos comprender si esto es así con el problema de convertir configuraciones de compilación de Gradle de .gradle a .gradle.kts. Esto es especialmente aplicable al realizar la conversión desde la API más antigua de Groovy hacia la más reciente de Kotlin. Realizamos esto comparando el resumen antes y después de las configuraciones de compilación extraídas de Gradle a través de las herramientas de IntelliJ Platform.

Miembros del grupo

Marat Akhin
Responsable del laboratorio
Azat Abdullin
Investigador sénior
Niyaz Nigmatullin
Investigador
Sergei Kharitontcev-Beglov
Investigador júnior
Rustam Sadykov
Investigador júnior
Kristina Trofimova
Investigadora júnior

Anteriores miembros

Mikhail Belyaev
Vladimir Itsykson
Valentin Sobol
Daniil Stepanov