Detection of thread-blocking calls in non-blocking methods

Руководитель

Николай Митропольский

Продукт

IntelliJ IDEA

Город

Москва

Проект
  • Разработать модуль для Intellij IDEA, находящий вызовы блокирующих методов, то есть тех, которые при некоторых обстоятельствах останавливают поток (thread) выполнения (ввод-вывод, мьютексы, мониторы, семафоры итп).
  • Обеспечить автоматическое определение является ли метод блокирующим на основе того, какие методы он вызывает. Поддержать специальные аннотации для блокирующих и неблокирующих методов.
  • Создать инспекцию, которая будет подсвечивать вызовы блокирующих методов в неблокирующем контексте (RxJava, Reactor, Kotlin-coroutines, etc.)
  • Придумать что делать дальше :) (поддержка фреймворков, quickfixes и т.п.)
Технологии

Intellij IDEA SDK

Ожидаемый результат

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

Требования

Языки программирования: Java/Kotlin

Знания и навыки

  • опыт работы с неблокирующими фреймворками и понимание почему этот проект - полезная затея;
  • готовность работать с синтаксическими деревьями в API Intellij IDEA.

Реализация