Проекты:

К.ф.-м.н. Алексей Бородин, Дмитрий Журихин, Сергей Сыромятников— Анализ программ на компилируемых языках программирования (C/C++/Java/Kotlin/Go);
— Разработка обобщённого AST-анализатора для разных языков программирования (Java/Kotlin/Go);
— Девиртуализация вызовов Java/C++ методов;
— Анализ программ на динамических языках (Python, JavaScript), в том числе: девиртулиазация вызовов; обобщенный AST-анализа;  поддержка межпроцедурного и чувствительного к путям анализа (выведение типов, детекторы и проч);
— Разработка детекторов ошибок на основе Clang Static Analyzer;
— Разработка детекторов ошибок в программах: использования неинициализированной памяти, целочисленные переполнение, разыменование нулевых указалей, утечки памяти и ресурсов;
— Разработка детекторов потенциальных уязвимостей, утечек приватных данных;
— Поиск ошибок на уровне классов для C++/Java;
— Моделирование коллекций языков Go/Java;
— Статическое символьное выполнение и детекторы на его основе;
— Методы повторного анализа кода.
К.ф.-м.н. Валерий Игнатьев, к.т.н. Никита Шимчик, Михаил Беляев1. Статический анализ иcходного кода.
1.1 [Svace, SharpChecker] Поиск ошибок в программах на языках платформы .NET (C#, VB.NET):
— Разработка детекторов ошибок;
— Разработка и улучшение алгоритмов анализа;
— Поддержка новых возможностей языка C#, создание API для пользовательских детекторов.
1.2 [Irbis] Поиск уязвимостей в исходном коде на C++.

2. Большие языковые модели (LLM) для анализа исходного кода.
2.1 Верификация предупреждений svace с помощью LLM:
— устойчивость предсказаний при эквивалентных мутациях кода;
— дообучение небольших (до 1b, 10b) моделей для достижения сопоставимого качества;
— агентный подход для предоставления информации об исходном коде.
2.2 Поиск новых типов ошибок при помощи LLM.

3. Методы машинного обучения для поиска ошибок в исходном коде:
— Поиск ошибок на основе обобщения (кластеризации) похожих исправлений в истории коммитов в репозитории;
— Верификация предупреждений с помощью предобученного классификатора по метрикам кода: поддержка новых языков;
— Поиск новых типов ошибок, например, алгоритмических (varmisuse): языково-независимый подход.