Internships
Register
Copyright © 2000—2025 JetBrains s.r.o.

Dataflow анализ для C++

Description

В нашем продукте Clion есть анализ потоков данных для языка С++, который позволяет предсказывать ветвления, находить “висячие” ссылки, обращения к удалённой памяти, итд. Все эти анализы написаны на специальном языке, напоминающем язык логики первого порядка. Этот язык интерпретируется, используя для представления знаний о программе специальную структуру данных BDD (Binary Decision Diagrams), которая является компактным представлением дизъюнктивно-нормальной формы булева предиката.
Этот язык удобный для написания DFA, но не имеет поддержки на уровне IDE.
Кроме того, у нас есть ещё одна IDE для С++ на базе плагина к Microsoft Visual Studio. Clion написан на Java/Kotlin, Resharper - на С++. Необходимо переиспользовать DFA из CLion-а в Resharper C++.

Вам предстоит:

  • придумать DSL (domain-specific language) на базе языка Kotlin, на который можно перевести все DFA-анализы, написанные на языке логики первого порядка.
  • интерпретатор этого языка написан на Java, его необходимо тоже перевести на Kotlin. Затем всю компоненту нужно будет собрать на платформе Kotlin Native для использования в общем нативном back-end-е для Clion и Resharper C++
  • ускорить DFA разными методами - инкрементальные вычисления, переупорядочивание переменных в BDD и другое

Requirements

  • Знание языков Java и Kotlin
  • Знание языка С++ будет плюсом
  • Интерес к теории компиляторов и статических анализаторов кода
  • Опыт использования Kotlin Native будет плюсом

Admission

Разработчики: Лето 2021

Mentor

Alexander Kirillin

Mentor's location

Remote

Product/Team

CLion

Tags

C++
Compilers
Java
Kotlin
Research